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的話 速度是最快的!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章