Java字符流(Character Streams)是Java提供的一种用于读写文本文件的输入/输出流。与字节流不同,字符流直接操作字符数据,而不是字节数据。字符流提供了与平台无关的字符编码支持,可以对各种不同的字符编码进行正确的读写操作。
Java字符流分为两个层次结构:Reader和Writer。
Reader类
在Java中,Reader类是所有字符输入流的抽象父类,它定义了读取字符流的基本方法。
常见的Reader子类包括:
- FileReader:用于读取文件
- InputStreamReader:将字节流转换为字符流
- BufferedReader:带有缓冲的字符输入流,提供了更高效的读取操作
Writer类
在Java中,Writer类是所有字符输出流的抽象父类,它定义了写入字符流的基本方法。
常见的Writer子类包括:
- FileWriter:用于写入文件
- OutputStreamWriter:将字符流转换为字节流
- BufferedWriter:带有缓冲的字符输出流,提供了更高效的写入操作
字符编码
字符编码是将字符映射为二进制数据的规则或算法。Java字符流提供了对各种字符编码的支持,包括ASCII、UTF-8、GBK等。
在使用字符流进行读写操作时,可以指定需要使用的字符编码。例如,使用UTF-8编码读取一个文本文件的代码如下:
Reader reader = new InputStreamReader(new FileInputStream("example.txt"), "UTF-8");
同样,使用UTF-8编码写入一个文本文件的代码如下:
Writer writer = new OutputStreamWriter(new FileOutputStream("example.txt"), "UTF-8");
通过指定字符编码,确保了在不同平台上的文件读写操作的一致性。
总结
Java字符流提供了方便的文本文件读写操作,具有与平台无关的字符编码支持。通过正确选择和指定字符编码,可以确保在不同平台上的文本文件读写的正确性和一致性。