黑马程序员—IO流复制练习

本文介绍了一个Java文件复制的实例,包括文本文件和图片文件的复制方法。文本文件使用字符流进行逐字符复制,并演示了使用缓冲区提高效率的方法。图片文件则采用字节流复制,确保数据完整无损。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

黑马程序员—IO流复制练习

一、复制文件

//将C盘一个文本文件复制到D盘。
/*
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。

步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/

mport java.io.*;

class CopyText 
{
	public static void main(String[] args) throws IOException
	{
		copy_2();
	}
	public static void copy_2()
	{
		FileWriter fw = null;
		FileReader fr = null;
		try
		{
			fw = new FileWriter("SystemDemo_copy.txt");
			fr = new FileReader("SystemDemo.java");

			char[] buf = new char[1024];

			int len = 0;
			while((len=fr.read(buf))!=-1)
			{
				fw.write(buf,0,len);
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("读写失败");
		}
		finally
		{
			if(fr!=null)
				try
				{
					fr.close();
				}
				catch (IOException e)
				{
				}
			if(fw!=null)
				try
				{
					fw.close();
				}
				catch (IOException e)
				{
				}
		}
	}
	//从C盘读一个字符,就往D盘写一个字符。
	public static void copy_1()throws IOException
	{
		//创建目的地。
		FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");

		//与已有文件关联。
		FileReader fr = new FileReader("RuntimeDemo.java");

		int ch = 0;

		while((ch=fr.read())!=-1)
		{
			fw.write(ch);
		}		
		fw.close();
		fr.close();
	}
}
二、复制图片
文件的复制!对于本题而言,因为是图片,所以要想读出来,必须使用字节流!
  字符流必须关闭资源,而字节流可以不关闭资源!但是还是建议全部的关闭,因为也不会出错,这是关闭资源的习惯!
另外:最常用的是字节流,因为字节流在内存中不需要缓冲区,图片,mp3 等都是字节流!但是对于文字的话还是字符流比较好;
因为字符流可以避免在字节流操作文字时出现的乱码现象(正好读取到了自定义缓冲区的分割处) ;

<span style="font-size:18px;">package july7file;
import java.io.*;
public class Demo7 {
		public static void main(String[] args) throws Exception {
		File src = new File("D:/java.jpg");
		File tar = new File("D:/meinv.jpg");
		copy(src,tar);
		System.out.println("复制完成!");
		}
		public static void copy(File src,File tar) throws Exception{
		/*
			Reader r = new FileReader(src);
			Writer w = new FileWriter(tar);*/
			/*if(!src.exists()){
			throw new Exception("对不起,源文件不存在!");
			}
		*/
		InputStream in = new FileInputStream(src);
		OutputStream os = new FileOutputStream(tar);
		byte []c = new byte[1024];
		int len;
		while((len = in.read(c)) != -1)
			{
			os.write(c);
			}
			/*
			w.close();
			r.close();
			*/
		}
}</span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值