字符流

作者: 只取一瓢爱了解 | 来源:发表于2020-07-01 21:33 被阅读0次

    字符输入流【Reader】

    FileReader类

    读取字符数据
    public class Demo1 {
        public static void main(String[] args) throws IOException {
            //创建FileReader对象,绑定要读取的数据源
            FileReader reader = new FileReader("/Users/wym/a.txt");
            //使用read读取文件
            /*int len;
            while((len = reader.read()) != -1){
                System.out.println((char)len);
            }*/
    
            int len;
            char[] chars = new char[1024];
            while((len = reader.read(chars)) != -1){
                System.out.println(new String(chars,0,len));
            }
            //释放资源
            reader.close();
        }
    }
    

    字符输出流【Writer】

    FileWriter类

    输出数据(单个输出)
    public class Demo1 {
        public static void main(String[] args) throws IOException {
            //创建FileWriter对象,绑定要写入数据的目的地
            FileWriter writer = new FileWriter("/Users/wym/c.txt");
            //使用write写入
            writer.write(97);
            //使用flush方法,将内存缓冲区中的数据,刷新到文件
            //writer.flush();
            //释放资源(回先把缓冲区中的数据刷新到文件)
            writer.close();
        }
    }
    
    关闭和刷新

    因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要flush方法了

    • flush :刷新缓冲区,流对象可以继续使用
    • close :先刷新缓冲区,然后通知系统释放资源。流对象不可以继续使用
    写数据的其他方式
    public class Demo1 {
        public static void main(String[] args) throws IOException {
            //创建FileWriter对象,绑定要写入数据的目的地
            FileWriter writer = new FileWriter("/Users/wym/d.txt");
            char[] chars = {'a','b','c','d','e'};
            writer.write(chars);
            writer.write(chars,1,3);
            writer.write("曼彻斯特城");
            //释放资源(回先把缓冲区中的数据刷新到文件)
            writer.close();
        }
    }
    
    续写和换行
    public class Demo3 {
        public static void main(String[] args) throws IOException {
              //创建FileWriter对象,绑定要写入数据的目的地
              FileWriter writer = new FileWriter("/Users/wym/e.txt",true);
              //写出字符串
                writer.write("曼城");
                //写出换行
                        writer.write("\r");
                //写出字符串
                writer.write("德布劳内");
              //释放资源(回先把缓冲区中的数据刷新到文件)
              writer.close();
          }
    }
    

    小贴士 :字符流,只能操作文本文件,不能操作图片,视频等非文本文件。

    当我们单纯读或者写文本文件时,使用字符流,其他情况使用字节流

    相关文章

      网友评论

          本文标题:字符流

          本文链接:https://www.haomeiwen.com/subject/bsqkqktx.html