国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

java讀取文件——按照行取出(使用BufferedReader和一次將數(shù)據(jù)保存到內(nèi)存兩種實現(xiàn)方式)

2019-11-14 14:56:48
字體:
供稿:網(wǎng)友

1、實現(xiàn)目標(biāo)

  讀取文件,將文件中的數(shù)據(jù)一行行的取出。

2、代碼實現(xiàn)

1)、方式1:

  通過BufferedReader的readLine()方法。

/**     * 功能:java讀取txt文件的內(nèi)容 步驟:1:先獲得文件句柄 2:獲得文件句柄當(dāng)做是輸入一個字節(jié)碼流,需要對這個輸入流進行讀取     * 3:讀取到輸入流后,需要讀取生成字節(jié)流 4:一行一行的輸出。readline()。 備注:需要考慮的是異常情況     *      * @param filePath     *            文件路徑[到達文件:如: D:/aa.txt]     * @return 將這個文件按照每一行切割成數(shù)組存放到list中。     */    public static List<String> readTxtFileIntoStringArrList(String filePath)    {        List<String> list = new ArrayList<String>();        try        {            String encoding = "GBK";            File file = new File(filePath);            if (file.isFile() && file.exists())            { // 判斷文件是否存在                InputStreamReader read = new InputStreamReader(                        new FileInputStream(file), encoding);// 考慮到編碼格式                BufferedReader bufferedReader = new BufferedReader(read);                String lineTxt = null;                while ((lineTxt = bufferedReader.readLine()) != null)                {                    list.add(lineTxt);                }                bufferedReader.close();                read.close();            }            else            {                System.out.);            }        }        catch (Exception e)        {            System.out.println("讀取文件內(nèi)容出錯");            e.printStackTrace();        }        return list;    }

2)、方式2

  通過文件byte數(shù)組暫存文件中內(nèi)容,將其轉(zhuǎn)換為String數(shù)據(jù),再按照 “回車換行” 進行分割。

3)、測試

結(jié)果:

3、比較

  方式1是將文件的一部分或全部數(shù)據(jù)讀取出來用BufferReader緩存起來,需要再沖緩存中取數(shù)據(jù),這樣比要得時候去文件中讀取要快一些。

  方式2是一次把文本的原始內(nèi)容直接讀取到內(nèi)存中再做處理(暫時不考慮內(nèi)存大小),這樣做效率也會提高。同時,可以處理當(dāng)你使用第1方式用readLine()方法時,文件又有線程在不斷的向文件中寫數(shù)據(jù)【只處理現(xiàn)在已經(jīng)在文件中的數(shù)據(jù)】。另外,用readline()之類的方法,可能需要反復(fù)訪問文件,而且每次readline()都會調(diào)用編碼轉(zhuǎn)換,降低了速度,所以,在已知編碼的情況下,按字節(jié)流方式先將文件都讀入內(nèi)存,再一次性編碼轉(zhuǎn)換是最快的方式。

  有錯誤的希望大牛不吝賜教。 想了解一下,

  1、通過ftp取一個文件到本地,我如何判斷對方的文件是否已經(jīng)寫完了。

  2、當(dāng)我使用上面的BufferedReader的readLine()方法一行行讀取文件的時候,我還向文件中添加數(shù)據(jù),會不會出現(xiàn)文件讀取結(jié)束不了的情況。

源碼下載:

https://github.com/zcr1007391008/demo 的TestReadAllFileToMemory。

  致謝:感謝您的閱讀!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 佛山市| 工布江达县| 苍山县| 长葛市| 沿河| 麦盖提县| 赤壁市| 嵩明县| 吴旗县| 景泰县| 武邑县| 财经| 乐亭县| 苏州市| 甘泉县| 鹿泉市| 大城县| 读书| 乌兰浩特市| 深泽县| 宜川县| 隆安县| 彭泽县| 巴里| 浦江县| 东阳市| 马关县| 泗阳县| 得荣县| 云和县| 高邮市| 札达县| 永丰县| 徐州市| 繁峙县| 措勤县| 阜平县| 吉首市| 岑溪市| 金沙县| 武宣县|