java 寫文件的三種方法比較


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();   

            }   

        }   

    }   

}   

 
 

    以下結果經過多次執行,取常出現的數據,由於只是簡單比較,不做詳細統計。

    當count=1000的,即寫文件1000行的時候,寫出的文件大小為18.5KB:   

    FileOutputStream執行耗時:46 豪秒   
    BufferedOutputStream執行耗時:31 豪秒   
    FileWriter執行耗時:15 豪秒   
      
      
    2.當count=10000的,即寫文件10000行的時候,寫出的文件大小為185KB:   
    FileOutputStream執行耗時:188 豪秒   
    BufferedOutputStream執行耗時:32 豪秒   
    FileWriter執行耗時:16 豪秒   
      
        
      
    3.當count=100000的,即寫文件100000行的時候,寫出的文件大小為1856KB:   
    FileOutputStream執行耗時:1266 豪秒   
    BufferedOutputStream執行耗時:125 豪秒   
    FileWriter執行耗時:93 豪秒   
      
        
      
    4.當count=1000000的,即寫文件1000000行的時候,寫出的文件大小為18555KB:   
    FileOutputStream執行耗時:12063 豪秒   
    BufferedOutputStream執行耗時:1484 豪秒   
    FileWriter執行耗時:969 豪秒



    本文轉。(ps: 個人感覺這種測試方法並不准確,測試方法不獨立,緩存因素或許有影響。)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM