Java关于使用IO流copy文件的方法

关于使用IO流中的方法将A文件内容复制到B文件中

首先创建一个文件

// 创建新的文件
File file = new File("D:\\111Java高级\\demo\\asd1.txt");
boolean createNewFile = file.createNewFile();
System.out.println(createNewFile);

// 向文件里添加内容
FileWriter fw = new FileWriter("D:\\111Java高级\\demo\\asd1.txt");
fw.write("冥冥之中,该来则来,无处可逃");
fw.flush();
第一种方式:

使用字节流(InputStream)来操作文件的copy

		// InputStream是抽象类所以用其子类FileInputStream来创建对象,当然也可以直接用子类来创建对象
		InputStream in = new FileInputStream("D:\\111Java高级\\demo\\asd1.txt");
		OutputStream out = new FileOutputStream("D:\\111Java高级\\demo\\asd2.txt");
		// 定义一个len变量用来接收读取的字节
		int len = 0;
		// 创建一个字节数组,用来存取该字节流读取的字节数
		byte[] buff = new byte[1024];
		// 将字节数组参数传入read()方法中
		while ((len = in.read(buff)) != -1) {
			// write()方法传入的三个参数,参数一:字节数组 参数二:开始读取的位置 参数三:读取的长度
			out.write(buff, 0, len);
			out.flush();
			// System.out.print(new String(buff, 0, len));
		}

一个汉字为两个字节, 数字、英文字符为一个字节

第二种方式:

使用缓冲字节流(BufferedInputStream)来操作文件的copy

		// 传的参数为对象(将缓冲指定文件的输入)
		BufferedInputStream in = new BufferedInputStream(new FileInputStream(
				"D:\\111Java高级\\demo\\asd1.txt"));
		BufferedOutputStream out = new BufferedOutputStream(
				new FileOutputStream("D:\\111Java高级\\demo\\asd2.txt"));
		// 定义一个len变量用来接收读取的字节
		int len = 0;
		// 创建一个字节数组,用来存取该字节流读取的字节数
		byte[] buff = new byte[1024];
		// 将字节数组参数传入read()方法中
		while ((len = in.read(buff)) != -1) {
			// write()方法传入的三个参数,参数一:字节数组 参数二:开始读取的位置 参数三:读取的长度
			 out.write(buff, 0, len);
			 out.flush();
			// System.out.print(new String(buff, 0, len));
		}
第三种方式:

使用字符流(Reader)来操作文件的copy

		// Reader是抽象类所以用其子类FileReader来创建实例对象
		Reader fre = new FileReader("D:\\111Java高级\\demo\\asd1.txt");
		Writer fwr = new FileWriter("D:\\111Java高级\\demo\\asd2.txt");
		// 定义一个int变量 接收读取的文本每一行的数据
		int ch = 0;
		// fre,read()读出来的为码值
		while ((ch = fre.read()) != -1) {
			// 将对应的码值转换为char字符
			fwr.write(String.valueOf((char) ch));
			fwr.flush();
		}
第四种方式:

使用缓冲字符流(BufferedReade)来操作文件的copy

		// 传的参数为对象(将缓冲指定文件的输入)
		BufferedReader bin = new BufferedReader(new FileReader(
				"D:\\111Java高级\\demo\\asd1.txt"));
		BufferedWriter bout = new BufferedWriter(new FileWriter(
				"D:\\111Java高级\\demo\\asd2.txt"));
		// 定义一个字符串变量 接收读取的文本每一行的数据
		String str = "";
		// 遍历输入写出数据
		while ((str = bin.readLine()) != null) {
			bout.write(str);
			bout.flush();
		}

可以看出字节流和缓冲字节流写出方式一样,字符流和缓冲字符流的写出方式一样,而缓冲字节流和缓冲字符流的创建对象方式类似 readLine()方法是BufferedReader缓冲字符流特有的方法,读取一行数据,为字符串类型

一般使用字符缓冲字符流读(BufferedReader)写(BufferedWriter)要方便一些,他可以直接以字符串创的形式读写(ReadLine())当然这个是视情况而定的

猜你喜欢

转载自blog.csdn.net/weixin_40187450/article/details/84853064