我使用这是我从网中复制的以下基本功能来读取文本文件

    public void read ()
{
    File file = new File("/Users/MAK/Desktop/data.txt");
    System.out.println("Start");
    try
    {
        //
        // Create a new Scanner object which will read the data from the
        // file passed in. To check if there are more line to read from it
        // we check by calling the scanner.hasNextLine() method. We then
        // read line one by one till all line is read.
        //
        Scanner scanner = new Scanner(file);
        int lineCount = 0;
        if (scanner == null)
        {
            System.out.println("Null File");
        }
        else
        {
            System.out.println(scanner.toString());
        }
        while (scanner.hasNextLine())
        {
            String line = scanner.nextLine();

            System.out.println("Line " + lineCount +" contain : " + line);
            lineCount++;
        }
        System.out.println("End of Try Bluck");
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
        System.out.println("Exception Bluck");
    }
    System.out.println("End");
}
}

它的工作与细中小尺寸文件(其含有10至20000线的数据) 然而,它失败,包含50万行文件的工作。我没有收到错误消息(至少没有看到任何人)。那么发生了什么?我应该怎么办这里能准备这么大的文件?

请注意:我已经增加了2 GB堆与4 GB的RAM运行Windows Server 2008的测试机上。但是这并没有太大的帮助!

请谁能告诉我,我应该在这里做什么?


<强>更新01

以下是输出

  

开始

     

java.util.Scanner中[定界符= \ p {javaWhitespace} +] [位置= 0] [匹配有效=假] [需要输入=假] [源闭合=假] [跳过=假] [组分隔= \,] [小数点=。] [正前缀=] [负前缀= \ Q- \ E] [正后缀=] [负后缀=] [NaN的字符串= \ Q \ E] [无穷大字符串= \ Q ∞\ E]

     

尝试Bluck结束

     

结束

有帮助吗?

解决方案

更好去的BufferedReader用的FileReader

其他提示

如果你没有得到一个错误,它很可能只是采取了很长一段时间。是磁盘仍然有效?你在与控制台输出做 - 已就停止?你说“坏了”,但你还没说怎么实际上表现。什么是你看见了什么?

内存不应该是因为你没有真正做什么用的线有问题 - 只是计算并将其写入控制台

在代码中的一个问题 - 你检查scanner是否为空,但不能的可能的是,因为你使用了构造函数调用返回的引用。您想寻找哪些情况应对?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top