java写文件的三种方法比较

  1. import java.io.File;  
    import java.io.FileOutputStream;  
    import java.io.*;  
      
    public class FileTest {  
        public FileTest() {  
        }  
      
        public static void main(String[] args) {  
            FileOutputStream out = null;  
            FileOutputStream outSTr = null;  
            BufferedOutputStream Buff=null;  
            FileWriter fw = null;  
            int count=1000;//写文件行数  
            try {  
                out = new FileOutputStream(new File(“C:/add.txt”));  
                long begin = System.currentTimeMillis();  
                for (int i = 0; i < count; i++) {  
                    out.write(“测试java 文件操作\r\n”.getBytes());  
                }  
                out.close();  
                long end = System.currentTimeMillis();  
                System.out.println(“FileOutputStream执行耗时:” + (end - begin) + ” 豪秒”);  
      
                outSTr = new FileOutputStream(new File(“C:/add0.txt”));  
                 Buff=new BufferedOutputStream(outSTr);  
                long begin0 = System.currentTimeMillis();  
                for (int i = 0; i < count; i++) {  
                    Buff.write(“测试java 文件操作\r\n”.getBytes());  
                }  
                Buff.flush();  
                Buff.close();  
                long end0 = System.currentTimeMillis();  
                System.out.println(“BufferedOutputStream执行耗时:” + (end0 - begin0) + ” 豪秒”);  
      
      
                fw = new FileWriter(“C:/add2.txt”);  
                long begin3 = System.currentTimeMillis();  
                for (int i = 0; i < count; i++) {  
                    fw.write(“测试java 文件操作\r\n”);  
                }  
                            fw.close();  
                long end3 = System.currentTimeMillis();  
                System.out.println(“FileWriter执行耗时:” + (end3 - begin3) + ” 豪秒”);  
      
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            finally {  
                try {  
                    fw.close();  
                    Buff.close();  
                    outSTr.close();  
                    out.close();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }      

     以下结果经过多次执行,取常出现的数据,由于只是简单比较,不做详细统计。
  1. 当count=1000的,即写文件1000行的时候,写出的文件大小为18.5KB:  
  2. FileOutputStream执行耗时:46 豪秒  
  3. BufferedOutputStream执行耗时:31 豪秒  
  4. FileWriter执行耗时:15 豪秒  

  5. 当count=10000的,即写文件10000行的时候,写出的文件大小为185KB:  
  6. FileOutputStream执行耗时:188 豪秒  
  7. BufferedOutputStream执行耗时:32 豪秒  
  8. FileWriter执行耗时:16 豪秒  
  9.   
  10.     
  11.   
  12. 当count=100000的,即写文件100000行的时候,写出的文件大小为1856KB:  
  13. FileOutputStream执行耗时:1266 豪秒  
  14. BufferedOutputStream执行耗时:125 豪秒  
  15. FileWriter执行耗时:93 豪秒  
  16.   
  17.     
  18.   
  19. 当count=1000000的,即写文件1000000行的时候,写出的文件大小为18555KB:  
  20. FileOutputStream执行耗时:12063 豪秒  
  21. BufferedOutputStream执行耗时:1484 豪秒  
  22. FileWriter执行耗时:969 豪秒 

其中有.getByte()这个方法的影响,可以提取出来。再经测试FW的性能还是不错的,BUFFERED这个如果直接写BYTE的话 速度是最快的!


转自: http://www.blog.namind.com/write-file-java-comparison-of-three-methods.html

你可能感兴趣的:(ReadFile)