字符串拼接效率比較

一、遇到問題

/****讀取文件***/
    public String getFileText(String filePath){
        String retXMLStr = "";
        String read;
        filePath = filePath.replaceAll("\\\\", "/");
        File file = null;
        FileInputStream is =null;
            try {
                file = new File(filePath);
                is = new FileInputStream(file);
                if (!file.exists() || file.isDirectory()) {
                    return "";
                }
                /*
                //FileReader fileread = new FileReader(file);
                InputStreamReader fileread = new InputStreamReader(new FileInputStream(file));
                BufferedReader bufread = new BufferedReader(fileread);
                while ((read = bufread.readLine()) != null) {
                    // read = read+"/r/n";
                    retXMLStr = retXMLStr + read;
                }
                //這種寫法效率太低了,1M的文件要一分鐘,而且會將文件截斷
                */

                byte[] bt = new byte[is.available()];
                is.read(bt);
                retXMLStr = new String(bt);
            } catch (Exception e) {
                retXMLStr = filePath;
                e.printStackTrace();
            }finally{
                try {
                    is.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        return retXMLStr;
    }

二、問題原因

如備註所說,用“+”的方式將一行一行讀取來的文件流轉爲String,賦值給String變量,效率極其的低。當文件超過1M的時候,耗費時間60s左右,當文件較小的時候,並不明顯。

三、參考資料
這裏有篇比較字符串拼接的效率比較的文章,可以參考:
http://blog.csdn.net/rmn190/article/details/1492013

發佈了38 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章