Когда вы создаете экземпляр BuffereReader
, присваиваете ему count
, count
всегда будет ненулевым и, следовательно, будет удовлетворять циклу while:
count = new BufferedReader(input); //count is holding an instance of BufferedReader.
while(count != null){ //here count is non-null and while loop is infinite and program never exits.
Вместо этого используйте следующий код, гдекаждая строка будет прочитана и проверена, является ли она нулевой, если ноль, то программа завершит работу.:
input = new FileReader(txt);
count = new BufferedReader(input);
String line = null;
while(( line = count.readLine())!= null){ //each line is read and assigned to the String line variable.
System.out.println(line);
result++;
}
Если вы используете JDK-1.8, вы можете сократить свой код, используя Files
API:
int result = 0;
try (Stream<String> stream = Files.lines(Paths.get(txt.getAbsolutePath()))) {
//either print the lines or take the count.
//stream.forEach(System.out::println);
result = (int)stream.count();
} catch (IOException e) {
e.printStackTrace();
}