IO流中的字符流

        在Java API中,可以从其中读入一个字节序列的对象称之输入流,而可以向其中写入一个字节序列的对象称做输出流。 [1]  字节流就是普通的二进制流,读出来的是bit,而字节流不便于处理Unicode形式存储的信息。字符流就是在字节流的基础按照字符编码处理,处理的是char。字符流文件是指读写文件时采用字符流的方法。

就是在字节流的基础按照字符编码处理,处理的是char。

字符输入流(Reader):

构造方法:

protected Reader()
          创建一个新的字符流 reader,其重要部分将同步其自身的 reader。
protected Reader(Object lock)
          创建一个新的字符流 reader,其重要部分将同步给定的对象。
File f1 = new File("D:/aa/bb/cc/d.txt");
FileWriter wr = new FileWriter(f1);

 常用方法展示:

read():

要读取的文件:

 代码:

public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/d.txt");
        //创建输出流
        Reader reader = new FileReader(f1);
        //循环读取内容
        int n;
        while ((n = reader.read()) != -1){
            System.out.println((char) n);
        }
        //关闭资源
        reader.close();
    }

运行结果: 

 read(char[] cbuf)

要读取的文件: 

 代码:

    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/c.txt");
        //创建输入流
        Reader reader = new FileReader(f1);
        //创建一个char数组接收数据
        char[] chars = new char[10];
        //循环读取内容
        int n;
        while ((n = reader.read(chars)) != -1){
            String s = new String(chars,0,n);
            System.out.print(s);
        }
        //关闭资源
        reader.close();
    }

运行结果:  

 方法摘要:

abstract  void close()
          关闭该流并释放与之关联的所有资源。
 void mark(int readAheadLimit)
          标记流中的当前位置。
 boolean markSupported()
          判断此流是否支持 mark() 操作。
 int read()
          读取单个字符。
 int read(char[] cbuf)
          将字符读入数组。
abstract  int read(char[] cbuf, int off, int len)
          将字符读入数组的某一部分。
 int read(CharBuffer target)
          试图将字符读入指定的字符缓冲区。
 boolean ready()
          判断是否准备读取此流。
 void reset()
          重置该流。
 long skip(long n)
          跳过字符。

字符输出流(Writer)

创建输出流:

FileWriter wr = new FileWriter(f1);

使用方法:

    public static void main(String[] args) throws Exception {
        File f1 = new File("D:/aa/bb/cc/d.txt");
        //创建输出流
        FileWriter wr = new FileWriter(f1);
        //写入内容
        wr.write("只因你太美");
        //刷新该流的缓冲
        wr.flush();
        //关闭资源
        wr.close();
    }

 注意:写入内容后需要使用flush()方法刷新,否则内容不会被写入。

运行结果:

方法摘要: 

 Writer append(char c)
          将指定字符添加到此 writer。
 Writer append(CharSequence csq)
          将指定字符序列添加到此 writer。
 Writer append(CharSequence csq, int start, int end)
          将指定字符序列的子序列添加到此 writer.Appendable。
abstract  void close()
          关闭此流,但要先刷新它。
abstract  void flush()
          刷新该流的缓冲。
 void write(char[] cbuf)
          写入字符数组。
abstract  void write(char[] cbuf, int off, int len)
          写入字符数组的某一部分。
 void write(int c)
          写入单个字符。
 void write(String str)
          写入字符串。
 void write(String str, int off, int len)
          写入字符串的某一部分。

猜你喜欢

转载自blog.csdn.net/weixin_69420643/article/details/128322045