Java基础学习之IO流模拟输入复制粘贴功能

学习了IO流后,了解其IO体系
字符流:
Reader:输入流 读取 进入内存
Writer:输出流 写入 进硬盘
字节流:
InputStream:输入流 读取 进内存
OutputStream:输出流 写入 进硬盘

下面通过字符流的输入流(FileReader)以及输出流(FileWriter)模拟系统中的复制粘贴功能:如将D盘下的1.txt复制粘贴到C盘中。

思路:

  1. 确定源文件 d:/1.txt
  2. 确定目的文件 c:/1.txt
  3. 边读边写
  4. 释放资源

注意:
输入流中的read(数组)函数的返回值为int类型,返回的是覆盖数组中的元素长度,读取结束标志是返回值为-1;
每次写入结束后要使用flush()函数进行刷新缓存。

代码:
首先用基本的输入输出流实现:

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

public class Test1 {

	public static void main(String[] args){
		
		//1.确定源文件  d:/1.txt
		FileReader fr=null;
		FileWriter fw=null;
		try {
			fr=new FileReader("d:/1.txt");
			 //2.确定目标文件   c:/1.txt
			fw=new FileWriter("c:/1.txt");
			//3.边读边写
			char[] cbuf=new char[3];
			int len=0;   //覆盖的长度
			while((len=fr.read(cbuf))!=-1){
				fw.write(cbuf,0,len);    //将cbuf数组中从下标0的位置开始写入c:/1.txt,写入数组中的len个元素。
				fw.flush();
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally {
			//4.释放资源
			 try {
				fr.close();
				fw.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}

	}

}				

使用缓冲区(提高效率)实现:

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

public class Test2 {

	public static void main(String[] args) throws Exception {
		
		//1.确定源文件
		//FileReader fr=new FileReader("d:/1.txt");
		//提高效率
		//BufferedReader br=new BufferedReader(fr);
		BufferedReader br=new BufferedReader(new FileReader("d:/1.txt"));
		
		
		//2.确定目的文件
		
		BufferedWriter bw=new BufferedWriter(new FileWriter("d:/poet.txt"));
		
		//3.边读边写
		
		String str=null;
		while((str=br.readLine())!=null){
			bw.write(str);
			bw.newLine();
			bw.flush();
		}
		
		//4.释放资源
		br.close();
		bw.close();

	}

}

猜你喜欢

转载自blog.csdn.net/wyhluckydog/article/details/83511895