zoukankan      html  css  js  c++  java
  • 使用BufferedReader和BufferedWriter读写文件

    原理:BufferedReader会一次性从物理流中读取8k(默认数值,可以设置)字节内容到内存,如果外界有请求,就会到这里存取,如果内存里没有才到物理流里再去读。即使读,也是再8k。   
      而直接读物理流,是按字节来读。   
      对物理流的每次读取,都有IO操作。IO操作是最耗费时间的。     
      BufferedReader就是减少了大量IO操作,而为你节省了时间。   
       简单的说,一次IO操作,读取一个字节也是读取,读取8k个字节也是读取,两者花费时间相差不多。而一次IO的来回操作却要耗费大量时间。   
      好比是一辆大型汽车(设装100人),要去车站接人到公司,接一个人也是接,接100个人也是接,而时间一样。显然,接100个人最划算。 
      物理流就是一次一个字节(一个人)   
      Buffered就是一次8k个字节(100个人)   
      对于读取定长字节文件,当然BufferedReader更快了!

    Java代码  收藏代码
    1. import java.io.*;  
    2. public class Test11 {  
    3.     private static BufferedReader br = null;  
    4.     private static File file = null;  
    5.     private static BufferedWriter bw = null;  
    6.     public static void main(String[] args) {  
    7.         String b = null;  
    8.         file = new File("D:\\abc.txt");  
    9.         if (!file.exists() != false) {  
    10.             try {  
    11.                 file.createNewFile();  
    12.                   
    13.             } catch (IOException e) {  
    14.                 e.printStackTrace();  
    15.             }  
    16.           }  
    17.          try {  
    18.             bw = new BufferedWriter(new FileWriter(file));  
    19.             FileReader fr = new FileReader("D:\\Log.txt");  
    20.             br = new BufferedReader(fr);  
    21.             while ((b = br.readLine()) != null) {  
    22.                 System.out.println(b);  
    23.                 bw.write(b);//输出字符串  
    24.                 bw.newLine();//换行  
    25.                 bw.flush();  
    26.             }  
    27.         } catch (Exception e) {  
    28.             e.printStackTrace();  
    29.         }finally {  
    30.             try {  
    31.                 br.close();  
    32.                 //bw.close();  
    33.             } catch (IOException e) {  
    34.                 e.printStackTrace();  
    35.             }  
    36.         }  
    37.     }  
    38.   
    39.   
    40. }  
     
  • 相关阅读:
    Linux workqueue疑问【转】
    Java中基础类库使用
    Sdut 2164 Binomial Coeffcients (组合数学) (山东省ACM第二届省赛 D 题)
    python中使用mahotas包实现高斯模糊
    ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法
    Android 属性动画(Property Animation) 全然解析 (下)
    MySQL搜索: WHERE 多条件
    点滴记录——Centos 6.5 yum安装Ganglia
    标准linuxserver搭建
    检查ORACLE的警告文件的脚本
  • 原文地址:https://www.cnblogs.com/qizhenglong/p/2850853.html
Copyright © 2011-2022 走看看