Java I/O流(二)

2018-11-26  本文已影响0人  RicherYY

继续讲解字符流操作方式

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

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

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

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

原理参考之前写的东西。


4缓冲流

概念:

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

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

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));
        }
                
    }

}

字符缓冲流代码

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流中的一些东西,使用缓冲流以后添加两个新方法会让读取文件更加方便

上一篇 下一篇

猜你喜欢

热点阅读