Java字符流代码复制文件

Java代码字符流复制文件

由于字节流处理字符时并不方便,于是就有了字符流的产生,字符流是以字符为单位进行读取和写入;但是字符流不像字节流可以写入写出任何文件,但是凡是能用Word文档打开的文件,字符流就适用。

把D盘test.txt文件复制到E盘并命名为hello.txt

此方法利用字符流中 输入流 java.io.Reader() 和 输出流 java.io.Writer()读取和写入文件

public class CopyFile {

	public static void main(String[] args) throws Exception {
		copyFile();

	}

	private static void copyFile() throws Exception {
		// 创建输入流对象,并给出原文件位置
		FileReader fileReader = new FileReader(("D:\\test.txt"));
		Writer writer = new FileWriter("E:\\hello.txt");
		int red =0;
		// fileReader.read()该方法为读取数据,一次读取一个字节;
		// 如果字节读取完毕,则该方法输出结果为   -1;
		while((red=fileReader.read())!=-1) {
			//writer.write  该方法为写入数据,一次写入一个数据
			writer.write(red);
		}
		fileReader.close();
		writer.close();
	}
}

此代码方法同上,只是多用了char字符数组建立了一个缓冲区,提高了硬盘读取文件的效率

public class CopyFile {

	public static void main(String[] args) throws Exception {
		copyFile();

	}

	private static void copyFile() throws Exception {
		// 创建输入流对象,并给出原文件位置
		Reader reader = new FileReader(("D:\\test.txt"));
		// 创建输出流对象,并给出复制到的文件位置
		Writer writer = new FileWriter("E:\\hello.txt");
		char[] chars = new char[1024*10];
		int len =0;
		// fileReader.read()该方法为读取数据,一次读取一个字节;
		// 如果字节读取完毕,则该方法输出结果为   -1;
		while((len=reader.read(chars))!=-1) {
			//writer.write  该方法为写入数据,一次写入一个数据
			writer.write(chars,0,len);
		}
		reader.close();
		writer.close();
	}
}

利用字符缓冲流读取和写入文件,字符缓冲流的作用是一次读取和写入一定长度的数据,避免了硬盘一次一个字符的读取和写入,增强了文件读写的效率

public class CopyFile {

	public static void main(String[] args) throws Exception {
		copyFile();

	}

	private static void copyFile() throws Exception {
		// 创建输入流对象,并给出原文件位置
		Reader reader = new FileReader(("D:\\test.txt"));
		// 创建字符缓冲区读取对象
		BufferedReader bufferedReader = new BufferedReader(reader);
		// 创建输出流对象,并给出复制到的文件位置
		Writer writer = new FileWriter("E:\\hello.txt");
		// 创建字符缓冲区字符接收对象
		BufferedWriter bufferedWriter = new BufferedWriter(writer);
		char[] chars = new char[1024*10];
		int len =0;
		// bufferedReader.read()该方法为读取数据,一次读取一组字节;
		// 如果字节读取完毕,则该方法输出结果为   -1;
		while((len=bufferedReader.read(chars))!=-1) {
			//bufferedWriter.write  该方法为写入数据,一次写入一组数据
			bufferedWriter.write(chars,0,len);
		}
		bufferedReader.close();
		bufferedWriter.close();
	}
}

以行为单位读取文件

public class CopyFile {
	public static void main(String[] args) throws Exception {
		copy();
	}

	private static void copy() throws Exception {
		// 创建字符缓冲流读取对象      并添加被复制文件路径
		BufferedReader br = new BufferedReader(new FileReader("D:\\readLine.txt"));
		// 创建字符缓冲流写入对象      并添加要复制到的文件路径
		BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\copyLine.txt"));
		String lin ;
		// br.readLine 此方法用于读取文件,一次读取一行,即便是空格,此方法也能辨识,不退出,继续执行代码
		while((lin = br.readLine())!=null) {
			// 一次写入一行
			bw.write(lin);
			// 每写入一行,新创建一行
			bw.newLine();
		}
		// 关闭读取流
		br.close();
		// 关闭写入流
		bw.close();
		
	}

}

以上是关于字符流读写文件的Java代码,亲测有效,至于其中是否有bug,目前还没有发现,欢迎各位朋友指出,一定积极改正,共同学习,共同进步;

猜你喜欢

转载自blog.csdn.net/weixin_47405768/article/details/107870547
今日推荐