• Java IO(input output)流<二>


    一.字符流的缓冲区

    1.什么是缓冲区
           缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,

    这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

    2.为什么要引入缓冲区

           缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。是为了减少系统调用,使其能够高效率工作。

    3.字符流的缓冲

        3.1 BufferWriter实例

     1 import java.io.*;
     2 
     3 //使用BufferedWriter缓冲区对象来读取数据
     4 public class BufferedWriterDemo {
     5 
     6     public static void main(String[] args) throws IOException{
     7         //新建一个文件流来存储数据,并传递给BufferedWriter对象
     8         FileWriter fw =new FileWriter("BuffWriter_copy.txt");
     9         //新建缓冲区对象并将文件流对象传递给其构造函数
    10         BufferedWriter bufw=new BufferedWriter(fw);
    11         //往缓冲区中写数据
    12         for(int i=0;i<10;i++){
    13             
    14          bufw.write("abcde"+i);
    15          
    16          bufw.newLine();
    17          //将内存中的数据刷新到文件中
    18          bufw.flush();
    19         }
    20         //关闭缓冲区
    21         bufw.close();
    22     }
    23 
    24 }

    运行结果

       3.2 BufferedReader实例

    import java.io.*;
    
    /*
     * 建立BufferedReader缓冲区,使用newLine和readLine方法
     */
    public class BUfferedReaderDemo {
    
        public static void main(String[] args) throws IOException {
            //新建文件流,并将数据传递给缓冲区构造函数
            FileReader fr = new FileReader("test.txt") ;
            //新建缓冲区,调用其构造函数
            BufferedReader bufr = new BufferedReader(fr);
            //将数据打印
            //因为BufferedReader返回的最后数据为String,如果到了最后则为null
            String line=null;
            //调用BufferedReader的readLine方法
            while((line=bufr.readLine())!=null){
                
                System.out.println(line);
            }
            
        }
    
    }

    运行结果

    二.综合实例

         利用字符缓冲区来将一个文件内容复制到另一文件中

    import java.io.*;
    /*
     * 利用字符缓冲区来将一个文件内容复制到另一文件中
     */
    public class BufferWriterDemo {
    
        public static void main(String[] args) {
            //创建一个缓冲区写对象,并初始化为null
            BufferedWriter bufw=null;
            //创建一个缓冲区读对象,并初始化为null
            BufferedReader bufr=null;
            
            try{
                //缓冲区的构造函数必须 有一个参数
                //新建一个写文件的流并传递给缓冲区写对象的构造函数
                bufw=new BufferedWriter(new FileWriter("buffer_copy.txt"));
                //新建一个读文件的流并传递给缓冲区读对象的构造函数
                bufr=new BufferedReader(new FileReader("FileRead.java"));
                //缓冲区返回一个String值,当缓冲区中没有数据是值为null
                String line=null;
                //缓冲区写对象有一个readLine函数,用来按行读取数据
                while((line=bufr.readLine())!=null){
                //缓冲区写对象也有write函数    
                    bufw.write(line);
                //newLine将读到的数据换行,也就是按原来数据格式一致来存储    
                    bufw.newLine();
                //刷新数据到文件中    
                    bufw.flush();
                }
            }
            
            catch(IOException e){
                
                throw new RuntimeException("读写错误");
            }
            finally{
                
                 try{
                     
                   if(bufw!=null){
                    
                    bufw.close();
                }
                
              }
                catch(IOException e){
                    
                    throw new RuntimeException("写错误");
                }
                 try{
                     
                     if(bufr!=null){
                         
                         bufr.close();
                     }
                 }
                 catch(IOException e){
                     
                     throw new RuntimeException("读错误");
                 }
            }
        }
    
    }

    运行结果

  • 相关阅读:
    hg下拉和上传代码
    PC下ubuntu查找PC串口并加入用户组
    pyserial安装
    profile, bashrc, source, setup.*sh
    另一篇xtion、kinect选择比较(openni下)
    OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较
    ROS安装环境配置及多版本的切换
    ubuntu安装软件或upgrade出现 You might want to run 'apt-get -f install' to correct these
    树莓派静态IP配置
    android之MP3播放器(1)
  • 原文地址:https://www.cnblogs.com/3WWanXiang/p/4575219.html
Copyright © 2020-2023  润新知