美文网首页
Java I/O流(二)

Java I/O流(二)

作者: RicherYY | 来源:发表于2018-11-26 21:51 被阅读0次

继续讲解字符流操作方式

3.使用字符流来操作文件

使用字节流来操作汉字或者特殊符号的时候容易乱码,建以使用字符流
现有字节流后有字符流,字符流是对字节流的补充。
一般使用二进制文件必须使用字节流(图片,音频,视频)
一般使用文本文件使用字符流

字符流和字节流相同,使用原理相同。不同的是

1.创建源的时候需要用FileWrite/FileRead方法创建源
2.读取的时候需要一个char[ ] 数组接收读取的文字

原理参考之前写的东西。


4缓冲流

概念:

  • 隐藏了底层节点流的差异提供了更方便的输入/输出功能,让我们只关心高级流的操作
  • 使用处理流来包装节点流,程序直接操作处理流,让节点流和底层设备做IO操作
  • 只关闭处理流就行了

缓冲流和普通的文件流一样也有四大基类
BufferedInputStream
BufferedOutputStream
BufferedWrite
BufferedRead

字节包装流的代码感受一下

  • 单纯使用文件流的时候,写入需要告诉程序开始位置结束位置。buffered直接写入就行
  • 读取的时候直接while读取,但是打印的时候还需要写开始位置结束位置
public class BufferSteamDemo {
    
    public static void main(String[] args) throws IOException{
        
        //字节缓冲输出流 
        /*
         * 这个过程包括
         * 1.创建源File f = new File(路径);
         * 2.创建管道,OutputStream os = new FileOutputStream(f)
         * 3.将os放入BufferedOutpuStream里
         */
  BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:/myDoc/out.txt"));
        //直接写入字符串
        bos.write("Hello World".getBytes());
        //关闭流
        bos.close();
        
        //字节缓冲输入流
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:/myDoc/out.txt"));
        byte[] buffer = new byte[1024];
        int len;
        
        while((len = bis.read(buffer))!= -1) {
            System.out.println(new String (buffer,0,len));
        }
                
    }

}

字符缓冲流代码

  • 字符缓冲流强大在读取下一行的时候直接调用newLine()方法就行
  • 字符缓冲流读取的时候可以不用常规读取文件的操作,先new 一个String变量 让为空值
    while循环让变量不为null 直接调用readline()方法 就可以读取文件。
  • 使用字符缓冲流的时候利用常规操作有一定风险,因为char[ ] buffer数组中装了bufferd方法1024个位置容易打出空位,所以也要标记好开始的位置和结束的位置
public class BufferedWritedReadSteamDemo {
    
    public static void main(String[] args) throws IOException {
        
        //字符缓冲流写入
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:/myDoc/hello.txt"));
        bw.write("你好,测试");
        bw.newLine();//写到下一行
        bw.write("你好,再见");
        //bw.flush();
        bw.close();
        
        System.out.println("写入成功!");
                
        //字符缓冲流读取
        BufferedReader br = new BufferedReader(new FileReader("D:/myDoc/hello.txt"));
        
        /*
         * 常规操作
         */
//      char [] buffer = new char[1024];
//      
//      int len;
//      while((len = br.read(buffer))!= -1) {
//          System.out.println(new String (buffer,0,len));
//      }
        
        /*
         * 使用包装流之后的新方法
         */
        String line = null;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    }

}

小结:
Buffered包装了下级的File流中的一些东西,使用缓冲流以后添加两个新方法会让读取文件更加方便

相关文章

  • Java I/O流(二)

    继续讲解字符流操作方式 3.使用字符流来操作文件 使用字节流来操作汉字或者特殊符号的时候容易乱码,建以使用字符流现...

  • I/O流

    java常见的I/O流

  • Java中的I/O流

    谷歌I/O大会,现在赶一下时髦,在这里说一下Java的I/O流。I/O流可以简单的理解input/output流,...

  • Java I/O (二)--I/O流的使用

    输入 从缓存输入 一般进行文件的输入输出时,都会采用缓存的方式,这样能够提高应用程序性能。如果想要打开一个文件进行...

  • JavaSE Day19 IO

    1. Java 中常用的 I/O 流常用类型在哪个包?常用类型有哪些? I/O 流的常用类型都在 java.io ...

  • I/O

    Java I/O 总结 理解Java中字符流与字节流的区别 深入学习 Java 序列化 Java I/O 操作及优...

  • Java-10 I/O流

    I/O流全称是Input/Output Stream,译为输入输出流 I/O流常用的类型都在java.io包中 类...

  • Java I/O流

    概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象流的本质:数据传输,根据数据传输...

  • Java I/O流

    文件的读写是java i/o流常用的也是最基础的操作,然而字节流,字符流,InputStream,OutpurSt...

  • Java I/O流

    1.简介 1.1继承结构 in/out相对于程序而言的输入(读取)和输出(写出)的过程。在Java中,根据处理的数...

网友评论

      本文标题:Java I/O流(二)

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