zoukankan      html  css  js  c++  java
  • Java文件与io——缓冲流

    对文件或其它目标频繁的读写操作,效率低,性能差。

    使用缓冲流的好处,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。

    BufferedInputStream:为另一个输入流添加一些功能,在创建时,会创建一个内部缓冲区数组,用于缓冲数据

    BufferedOutputStream:通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统

    BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

    BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    public class BufferedStreamDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            byteStreamOut();
            byteStreamIn();
            charStreamOut();
            charStreamIn();
        }
        //BufferedOutputStream
        public static void byteStreamOut(){
            try {
                OutputStream out=new FileOutputStream("G:\hhb.txt");
                BufferedOutputStream bos=new BufferedOutputStream(out);
                bos.write("hhhhh".getBytes());
                bos.close();
                out.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        //BufferedInputStream
        public static void byteStreamIn(){
            try {
                InputStream in=new FileInputStream("G:\hhb.txt");
                BufferedInputStream bis=new BufferedInputStream(in);
                byte[] bytes=new byte[1024];
                int len=-1;
                StringBuffer sb=new StringBuffer();
                while((len=bis.read(bytes))!=-1){
                    sb.append(new String(bytes, 0, len));
                }
                bis.close();
                in.close();
                System.out.println(sb);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //BufferedWriter
        public static void charStreamOut(){
            try {
                Writer w=new FileWriter("G:\hhh.txt");
                BufferedWriter bw=new BufferedWriter(w);
                bw.write("我爱你!");
                bw.close();
                w.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //BufferedReader
        public static void charStreamIn(){
            try {
                Reader r=new FileReader("G:\hhh.txt");
                BufferedReader br=new BufferedReader(r);
                char[] c=new char[1];
                int len = -1;
                StringBuffer sb=new StringBuffer();
                while((len=br.read(c))!=-1){
                    sb.append(c,0,len);
                }
                br.close();
                r.close();
                System.out.println(sb);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
                    
        }
    }
  • 相关阅读:
    扩展LVM 逻辑卷存储空间
    Linux Shell远程执行命令(命令行与脚本方式)
    vsftpd FTP服务器配置
    初识小米Minos
    使用Libpng库实现Tiny6410显示PNG图片
    uCos-II内存管理
    应用程序调用tslib出现segmentation fault
    Linux-2.6.39在Tiny6410上的移植
    Linux-2.6.39在Tiny6410上的移植
    Tiny6410移植tslib
  • 原文地址:https://www.cnblogs.com/shenhainixin/p/5117834.html
Copyright © 2011-2022 走看看