字符输出流(Writer)& 字符输入流(Reader)

    xiaoxiao2025-09-01  3

    1.字符输出流

    字符流适用于处理中文数据,Witer是字符输出流的处理类。 类定义:public abstract class writer implements Appendable,Closeable,Flushable

    与 OutputStream相比多了一个Appendable接口。

    在Writer类里面提供了一个直接输出字符串的方法:

    public void write(String str) throws IOException

    要操作文件时,使用FileWriter子类。

    eg:通过Writer实现输出

    import java.io.File; import java.io.FileWriter; import java.io.Writer; public class TestWriter { public static void main(String[] args) throws Exception { File file = new File("C:\\Users\\64576\\Desktop\\Hello.txt"); if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } String msg = "Hello!"; Writer out = new FileWriter(file); out.write(msg); out.close(); } }

    Writer类的结构与方法的使用与OutputStream非常相似,只是Writer类对于中文的支持很好并且提供了直接写入 String的方法而已。

    2.字符输入流 Reader依然也是一个抽象类。

    如果要进行文件读取,同样的,使用FileReader。

    在Reader类中没有方法可以直接读取字符串类 型,这个时候只能通过字符数组进行读取操作。

    import java.io.File; import java.io.FileReader; import java.io.Reader; public class TestReader { public static void main(String[] args) throws Exception{ // 1.定义文件路径 File file = new File( "C:\\Users\\64576\\Desktop\\Hello.txt"); // 2.必须保证文件存在才能进行处理 if (file.exists()) { Reader in = new FileReader(file) ; char[] data = new char[1024] ; int len = in.read(data) ; // 将数据读取到字符数组中 String result = new String(data, 0, len) ; System.out.println("读取内容【"+result+"】") ; in.close(); } } }

    字符流适合处理中文,字节流适合处理一切数据类型(对中文支持不好)

    在以后进行IO处理的时候,如果处理的是图片、音乐、文字都可以使用字节流,而只有处理中文的时候才会使用字符流。

    最新回复(0)