本人用 Java读入按行读入文件。文件大小17.823M 纯文本文件,文件309310行 
读了将近1个小时,居然读不完,怎么回事?
另外Java有没有函数可以一次性将文件入读?代码如下
//===============================================
FileReader fr = new FileReader(strFile+strFeedno);
BufferedReader br = new BufferedReader(fr);

String strLine = "";
String strDoc  = "";
while((strLine = br.readLine()) != null)
{
strDoc = strDoc + strLine + "\n";
//System.out.println(strLine);
}

 // --XXXXXX

if( fr != null ) fr.close();
if( br != null ) br.close();
//=================================================

解决方案 »

  1.   

    怎么刷新, 我刚用Java不久。 能不能具体一点。
      

  2.   

    不是因为文件没有一次行读入,
    是因为你把读出来的每行放到了String里了。太耗内存了,程序卡了。还有拼接字符串用StringBuffer效率高一些。
    你把这个文件读出来的目的是要干什么?可以分次读,处理完了再接着读。或者用内存映射。
    总之,别一次性的处理。
      

  3.   


    其实你文件并不算太大,先改下StringBuffer试试。
      

  4.   

    啊?怎么会那么长时间啊?我用我的代码测试了一下,读3万多行的话需要0.5秒左右 文件48MB,你参考我的一下
    public static int getLocalFileRow(String localFile) {
    int localCount = 0;
    try {
    File file = new File(localFile);
    BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    while(buffer.readLine()!=null){
    ++localCount; //获得本地文件记录的行数
    }
                    buffer.close();
    } catch (Exception e) {
    }
    System.out.println(localFile+"有"+localCount+"行");
    return localCount;
    }
      

  5.   

    这种方法虽然很耗资源 但也不至于1小时读不完啊。
    你可以在while里打个System.ou.println(count);//count为计数器
    看看他是卡到哪里了
      

  6.   


    看似是字符串拼接的耗时,但是String的+在运行时也会转成StringBuffer的append操作。