Java使用字节流实现图片音频的复制

Java字节流复制图片音频

java中的字节流可以实现文本的读入写入,当然也可以实现字节流对于图片的读入写入,就只需要写一个复制文本的字节输入输出流,然后在源文件和目标文件更换后缀图片就行了。

下面给出了source.png图片的路径,我们对其所对应的路径提供一个copysource.png的复制图片文件。

1.首先找到这两个文件的路径。如果写入的文本没有创建的话,会自动创建

File source = new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\source.png");

File copysource  = new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\copysource.png");

2.定义字节输入流,字节输出流

InputStream in = null;

OutputStream out = null;

3.通过字节输入流读入source.png文件的内容,在通过字节输出流将其输入到copysource.png中。

  in = new FileInputStream(source);
			out =new FileOutputStream(copysource);
			byte[] bt = new byte[(int)source.length()];
			int length = 0;
			while( (length = in.read(bt))!=-1) {
				out.write(bt,0,length);
			}

4.关闭流

if(null!=in) {
				try {
					in.close();
				}catch(IOException e) {

				}

			}
			if(null!=out) {
				try {
					out.close();
				}catch(IOException e) {

				}

			}

		   }

经过上述的代码,就可以将source.png的图片复制到copysource.png中了。这个时候就会发现该路径下多出了一张copysource.png的图片了。

以下是完整代码:

import java.io.*;

public class IOTest {

	public static void main(String[]args) {
		File source = new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\source.png");
		File copysource  = new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\copysource.png");
		InputStream in = null;
		OutputStream out = null;

		try {
			in = new FileInputStream(source);
			out =new FileOutputStream(copysource);
			byte[] bt = new byte[(int)source.length()];
			int length = 0;
			while( (length = in.read(bt))!=-1) {
				out.write(bt,0,length);
			}

		}catch(IOException e) {

		}finally {
			if(null!=in) {
				try {
					in.close();
				}catch(IOException e) {

				}

			}
			if(null!=out) {
				try {
					out.close();
				}catch(IOException e) {

				}

			}

		 }
			System.out.println("复制成功");
		}

}

和上面复制图片的代码一样,只需要修改文件路径,音频和视频都是可以复制的。

下面还是以上述的路径为例,给出一个后缀为mp4文件,我们将其通过代码复制一份,由上面的代码我们只需要修改文件路径的内容。

File source =new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\林俊杰-修炼爱情(超清).mp4");

File copysource  = new File("C:\\Users\\Lenovo\\Desktop\\csdn\\iotest\\copy修炼爱情JJ.mp4");

我们发现可以复制成功

到此这篇关于Java使用字节流实现图片音频的复制的文章就介绍到这了,更多相关java字节流内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-06-08

Java使用字节流复制文件的方法

其实用java程序复制文件并不难,具体内容如下 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.LinkedList; import java.util.List; //文件复制 //E:/3.jpg ---> D:/1.jpg public class CopyFileByIo { public static void ma

Java IO中字节流复制图片实现代码

Java IO--字节流复制图片实例 字节流用来操作图片.视屏.音频(进制文件) 实例代码: package learn; import java.io.*; public class Learn{ public static void main(String[] args) throws IOException { File file1=new File("D:/a.jpg"); File file2=new File("D:/b.jpg"); byte[] b=

详解Java中IO字节流基本操作(复制文件)并测试性能

此次案例将以复制文件的形式来演示IO字节流的基本操作,复制一个mp3文件,文件信息如下图: main方法测试 public static void main(String[] args) throws Exception { //源文件 String srcFile = "src/a.mp3"; //目的文件 String destFile = "src/b.mp3"; long start = System.currentTimeMillis(); ... 复制文

详解JAVA中使用FTPClient工具类上传下载

详解JAVA中使用FTPClient工具类上传下载 在Java程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件.本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件. 1.写一个javabean文件,描述ftp上传或下载的信息 实例代码: public class FtpUseBean { private String host; private Integer port; private String us

详解Java中AbstractMap抽象类

jdk1.8.0_144 下载地址:http://www.jb51.net/softs/551512.html AbstractMap抽象类实现了一些简单且通用的方法,本身并不难.但在这个抽象类中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范. 抽象类通常作为一种骨架实现,为各自子类实现公共的方法.上一篇我们讲解了Map接口,此篇对AbstractMap抽象类进行剖析研究. Java中Map类型的数据结构有相当多,AbstractMap作为它们的骨架实现实

详解java中的阻塞队列

阻塞队列简介 阻塞队列(BlockingQueue)首先是一个支持先进先出的队列,与普通的队列完全相同: 其次是一个支持阻塞操作的队列,即: 当队列满时,会阻塞执行插入操作的线程,直到队列不满. 当队列为空时,会阻塞执行获取操作的线程,直到队列不为空. 阻塞队列用在多线程的场景下,因此阻塞队列使用了锁机制来保证同步,这里使用的可重入锁: 而对于阻塞与唤醒机制则有与锁绑定的Condition实现 应用场景:生产者消费者模式 java中的阻塞队列 java中的阻塞队列根据容量可以分为有界队列和无界队

详解Java中的不可变对象

不可变对象想必大部分朋友都不陌生,大家在平时写代码的过程中100%会使用到不可变对象,比如最常见的String对象.包装器对象等,那么到底为何Java语言要这么设计,真正意图和考虑点是什么?可能一些朋友没有细想过这些问题,今天我们就来聊聊跟不可变对象有关的话题. 一.什么是不可变对象 下面是<Effective Java>这本书对于不可变对象的定义: 不可变对象(Immutable Object):对象一旦被创建后,对象所有的状态及属性在其生命周期内不会发生任何变化. 从不可变对象的定义来看,

详解Java中@Override的作用

详解Java中@Override的作用 @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法. 举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性. @Overr

详解Java中多线程异常捕获Runnable的实现

详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口的LayerInitTask类,ThreadException类,线程安全的Vector 3.思路: 向LayerInitTask中传入Vector,记录异常情况,外部遍历,判断,抛出异常. 4.代码: package step5.exception; import java.util.Vector

详解java 中Spring jsonp 跨域请求的实例

详解java 中Spring jsonp 跨域请求的实例 jsonp介绍 JSONP(JSON with Padding)是JSON的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外.利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSO

详解Java 中的嵌套类与内部类

详解Java 中的嵌套类与内部类 在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class).嵌套类有两种类型:静态嵌套类和非静态嵌套类.静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类.其中内部类又分为三种类型: 1.在外部类中直接定义的内部类. 2.在函数中定义的内部类. 3.匿名内部类. 对于这几种类型的访问规则, 示例程序如下: package lxg; //定义外部类 public class OuterClass { //外部类静态成员变量

详解Java中Collections.sort排序

Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f,g这样,当然数字也是这样的. compare(a,b)方法:根据第一个参数小于.等于或大于第二个参数分别返回负整数.零或正整数. equals(obj)方法:仅当指定的对象也是一个 Comparator,并且强行实施与此 Comparator 相同的排序时才返回 true. Collections.