java输入输出17:IO流(字符流)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/84309350
字符流是什么

字符流是可以直接读写字符的IO流。字符流读取字符,就要先读取到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节在写出。

FileReader类

1、FileReader继承的类:
在这里插入图片描述
2、FileReader类的构造方法
在这里插入图片描述
3、FileReader读取文件数据输出到控制台

package zifu;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class Demo1_FileReader {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("11.txt");
		int b;
		while ((b = fr.read()) != -1) {
			System.out.print((char)b);
		}
		fr.close();
	}
}
FileWriter类

1、FileWriter类继承的类
在这里插入图片描述
2、FileWriter类的构造方法
在这里插入图片描述
3、FileReader类写入数据到文件

package zifu;

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

public class Demo2_FileWriter {
	public static void main(String[] args) throws IOException {
		FileWriter fw = new FileWriter("copy.txt");
		fw.write("花不醉人人自醉,色不迷人人自迷!");
		fw.close();
	}
}

FileReader和FileWriter类的应用示例
package zifu;

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

public class Demo_FileReaderAndWriter {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("11.txt");
		FileWriter fw = new FileWriter("copy.txt");
		int b;
		while ((b = fr.read()) != -1) {
			fw.write(b);
			fw.write(",你好帅!");
		}
		fr.close();
		//Writer类中有一个2k的小缓冲区,如果不关流,就会将内容写到缓冲区里,关流会将缓冲区内容刷新,再关闭。
		fw.close();
	}
}

BufferedReader类和BufferedWriter类

带缓冲区的流中的特殊方法。

  • readLine():BufferReader
  • newLine():BufferWrier
  • newLine()和\r\n的区别
  • newLine()是跨平台的
  • \r\n只支持windows系统。
package zifu;

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

public class Demo4_Buffer {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new FileReader("11.txt"));
		BufferedWriter bw = new BufferedWriter(new FileWriter("copy.txt"));
		String line;
		while ((line = br.readLine()) != null) {
			bw.write(line);
			bw.newLine();
		}
		br.close();
		bw.close();
	}
}
文件拷贝
package zifu;

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

/**
 * 字符流也可以拷贝文件,但不推荐使用,因为读取时会把字节转为字符,写出时还要把字符转回字节。
 * 程序需要读取一段文本,或者需要写出一段文本的时候可以使用字符流。读取的时候是按照字符的大小读取的,不会出现半个中文,写出的时候可以直接将字符串写出,不用转换为字节数组。
 * 
 * 
 * 不可以拷贝非纯文本的文件,因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去。
 * 如果是?,直接写出,这样写出之后的文件就乱了
 * @author Administrator
 *
 */
public class Demo3_Copy {
	public static void main(String[] args) throws IOException {
		FileReader fr = new FileReader("11.txt");
		FileWriter fw = new FileWriter("copy.txt");
		char[] arr = new char[1024];
		int len;
		while ((len = fr.read(arr)) != -1) {
			fw.write(arr,0,len);
		}
		
		fr.close();
		fw.close();
		
	}
}

猜你喜欢

转载自blog.csdn.net/yuming226/article/details/84309350