Я использую следующую базовую функцию, которую я скопировал из сети, чтобы прочитать текстовый файл
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 до 20 тысяч строк данных)
Однако он не смог работать с файлом, содержащим 500 тысяч строк. Я не получаю сообщение об ошибке (по крайней мере, не вижу никого). так, что происходит? что я должен сделать здесь, чтобы иметь возможность подготовить такие большие файлы?
примечание. Я уже увеличил кучу на 2 ГБ на тестовой машине с Windows Server 2008 с оперативной памятью 4 ГБ. но это не сильно помогло!
Пожалуйста, кто-нибудь может сказать мне, что я должен делать здесь?
Обновление 01
Следующий вывод
Начало
java.util.Scanner [delimiters = \ p {javaWhitespace} +] [position = 0] [match valid = false] [нужен ввод = false] [источник закрыт = false] [пропущено = false] [разделитель группы = \,] [десятичный разделитель =.] [положительный префикс =] [отрицательный префикс = \ Q- \ E] [положительный суффикс =] [отрицательный суффикс =] [Строка NaN = \ Q \ E] [строка бесконечности = \ Q ∞ \ E]
Конец Try Bluck
Конец