Java字节流复制文件

浪滚滚 2020-09-10 05:34:45
public static void main(String[] args) throws IOException {
//这里用了多态,文件输入流文件来源地址:D:\aaa.jpg
InputStream in = new FileInputStream("D:\\aaa.jpg");
//高效字节输入流,底层是字节数组实现的,这里需要放入一个输入流对象
BufferedInputStream bis = new BufferedInputStream(in);
//这里用了多态,文件输出流写出到的目的地:D:\java0817\bbb.jpg在复制的过程中改名
OutputStream out = new FileOutputStream("D:\\java0817\\bbb.jpg");
//高效字节输出流,底层是字节数组,这里也需要放入一个输出流对象
BufferedOutputStream bos = new BufferedOutputStream(out);
//这里用一堆一堆写,所以要定义一个字节数组
byte [] bytes = new byte[1024];
int len = -1;
//循环读取文件内容到字节数组,同时当字节数组满或者读完文件内容时,输出到目标地址
while ((len = bis.read(bytes))!=-1){
out.write(bytes);
}

in.close();
bis.close();
//因为有缓冲区,所以这里要刷新后再关闭资源
bos.flush();
out.close();
bos.close();
System.out.println("复制成功");
}
...全文
3477 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
王大师王文峰 2020-09-12
  • 打赏
  • 举报
回复
我以前做过一个,你看看行不行 代码给你
package 课后;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
*
*@author 王文峯
*2020年4月21日 上午9:15:45
*/
public class MyFile03 {
	public static void main(String[] args) {
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			FileReader fr = new FileReader("C:\\soure.txt");
			FileWriter fw = new FileWriter("D:\\target.txt");
			br = new BufferedReader(fr);
			bw = new BufferedWriter(fw);
			String arrays = null;
			StringBuffer sBuffer = new StringBuffer();
			while ((arrays = br.readLine() )!=null) {
				sBuffer.append(arrays);
			}
			bw.write(sBuffer.toString());
			System.out.println("复制成功!!!");
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				if (br !=null) {
					br.close();
				}
				if (bw !=null) {
					bw.close();
				}
			} catch (IOException e2) {
				e2.printStackTrace();
			}
		}
	}
}
街头小贩 2020-09-11
  • 打赏
  • 举报
回复
你用的jdk是7以下吗
街头小贩 2020-09-11
  • 打赏
  • 举报
回复
即使是jdk7以下这样写法也不可取,jdk7+可以使用TWR

		try{
			try (InputStream in = new FileInputStream("D:\\aaa.jpg");
				BufferedInputStream bis = new BufferedInputStream(in);
				OutputStream out = new FileOutputStream("D:\\java0817\\bbb.jpg");
				BufferedOutputStream bos = new BufferedOutputStream(out);) {
				// 这里用一堆一堆写,所以要定义一个字节数组
				byte[] bytes = new byte[1024];
				// 循环读取文件内容到字节数组,同时当字节数组满或者读完文件内容时,输出到目标地址
				while ((bis.read(bytes)) != -1) {
					out.write(bytes);
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}
jdk7以下可以使用try{}finally{//在里关闭IO流}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧