java字节缓冲流和字符缓冲流

Posted Akiyama

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字节缓冲流和字符缓冲流相关的知识,希望对你有一定的参考价值。

一.字节缓冲流

1.介绍

字节缓冲流根据流的方向,分为:

1.写入数据到流中,字节缓冲输出流 BufferedOutputStream

2.读取流中的数据,字节缓冲输入流 BufferedInputStream

它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度

2.字节缓冲输出流BufferedOutputStream

构造方法:

public BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

 

    //字节输出缓冲流
    public static void method01() throws IOException{
      //创建基本的字节输出流
        FileOutputStream fos=new FileOutputStream("E:\java\demo.txt");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        //写数据
        fos.write(100);
        //释放资源
        bos.close();
    }        

 

3.字节缓冲输入流 BufferedInputStream

 

构造方法:

 

public BufferedInputStream(InputStream in) 

//字节输入缓冲流
    public static void method02() throws IOException{
        //创建缓冲流对象
        FileInputStream fis=new FileInputStream("E:\java\demo.txt");
        BufferedInputStream bis=new BufferedInputStream(fis);
        //读数据
        int len=0;
        while((len=bis.read())!=-1){
            System.out.println((char)len);
        }
        //释放资源
        bis.close();
    }    

4. 复制文件

    public static void method04() throws IOException{
        //明确数据源
        FileInputStream fis=new FileInputStream("E:\java\aaa.zip");
        BufferedInputStream bis=new BufferedInputStream(fis);
        //明确目的地
        FileOutputStream fos=new FileOutputStream("E:\java\a\aaa.zip");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        //开始复制
        long time1=System.currentTimeMillis();
        int len=0;
        byte[] ch=new byte[1024];
        while((len=bis.read(ch))!=-1){
            bos.write(ch,0,len);
        }
        long time2=System.currentTimeMillis();
        System.out.println(time2-time1);
        //释放资源
        bos.close();
        bis.close();
    }

 

二.字符缓冲流

1.介绍

字符缓冲输入流 BufferedReader

字符缓冲输出流 BufferedWriter

完成文本数据的高效的写入与读取的操作

2.字符缓冲输出流 BufferedWriter

void newLine() 根据当前的系统,写入一个换行符

public static void method01() throws IOException{
        //明确目的地
        FileWriter fw =new FileWriter("E:\java\demo01.txt");
        //添加缓冲流
        BufferedWriter bw=new BufferedWriter(fw);
        //写入文件
        //  windows: 

        //   linux:  

        //  newline();
        System.out.println(System.in);
        bw.write("你好");
        bw.newLine();
        bw.flush();
        bw.write("java");
        bw.newLine();
        bw.flush();
        bw.write("中国");
        bw.newLine();
        //释放资源
        bw.close();
    }

3.字符缓冲输入流 BufferedReader

 

public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

public static void method02() throws IOException{
        //明确数据源
        FileReader fr=new FileReader("E:\java0929\demo01.txt");
        //添加缓冲流
        BufferedReader br=new BufferedReader(fr);
        //开始读取文件
        String line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        line=br.readLine();
        System.out.println(line);
        //释放资源
        br.close();
}
public static void method03() throws IOException{
        //明确数据源
        FileReader fr=new FileReader("E:\java\demo01.txt");
        //添加缓冲流
        BufferedReader br=new BufferedReader(fr);
        //开始读取文件
        String line=null;
        while((line=br.readLine())!=null){
            System.out.print(line);
        }
        //释放资源
        br.close();
}

4.复制文件

 

public static void copy() throws IOException{
        //明确数据源
        FileReader fr=new FileReader("E:\java0929\demo02.txt");
        BufferedReader br=new BufferedReader(fr);
        //明确目的地
        FileWriter fw=new FileWriter("E:\java0929\c\demo02.txt");
        BufferedWriter bw=new BufferedWriter(fw);
        //开始复制
        String line=null;
        int linenum=0;
        while((line=br.readLine())!=null){
            linenum++;
            bw.write(linenum+" "+line);
            bw.newLine();
            bw.flush();
        }
        //释放资源
        bw.close();
        br.close();
    }

 

 

 

 

 

 

 

以上是关于java字节缓冲流和字符缓冲流的主要内容,如果未能解决你的问题,请参考以下文章

java 20 - 9 带有缓冲区的字节输出流和字节输入流

JavaSE——转换流和缓冲流

java.IO输入输出流:过滤流:buffer流和data流

JAVA SE基础篇51装饰流之缓冲流和转换流

Java学习笔记6.2.2 字符流 - 字节字符转换流

Java学习笔记6.2.2 字符流 - 字节字符转换流