Java读取文本文件不完全

时间:2017-12-06 02:04:09

标签: java

我编写了一个程序来读取文本文件中的逐行结果,以使用下面的代码检查某些条件。

for (File f : readAllTxtFile) {
    if (f.getName().endsWith(".txt") && f.getName().length() > 28) {

                Scanner input = new Scanner(f);

                while (input.hasNextLine()) {
                    String lineResult = input.nextLine();

                    System.out.println(lineResult); // I print out the line result here

                    if (lineResult.contains("TER_GetCarrierInfo")) {
                       ...//do something
                        break;
                    }
                }
   }
 }

我的问题是,为什么系统只读取到我的txt文件的一半并停止?虽然条件if (lineResult.contains("TER_GetCarrierInfo"))不存在/命中,但它没有继续阅读下一行。 我的txt文件在900 ++ kb左右获得了数千行。

有人可以跟我解释一下吗?

感谢和appreaciate

2 个答案:

答案 0 :(得分:0)

这是我用来模拟你的场景的代码。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class test {

    public static void main(String args[]) throws FileNotFoundException
    {

        File dir = new File("/yourpath");
        File[] readAllTxtFile = dir.listFiles();

        for (File f : readAllTxtFile) {
            if (f.getName().endsWith(".txt") && f.getName().length() > 28) {

                Scanner input = new Scanner(f);

                while (input.hasNextLine()) {
                    String lineResult = input.nextLine();

                    System.out.println(lineResult); // I print out the line result here

                    if (lineResult.contains("TER_GetCarrierInfo")) {
                        //do something
                        break;
                    }
                }
            }

        }

    }

}

如果你想检查你的程序是否继续在500行之后阅读,请在第500行之后的文本文件中输入'TER_GetCarrierInfo'并替换代码段

if (lineResult.contains("TER_GetCarrierInfo")) {
   System.out.println("Found 'TER_GetCarrierInfo' ");
   break;
}

这将显示即使文件的一半是scan.HTH,您的程序仍会继续。

答案 1 :(得分:0)

好的.. 我尝试改用

BufferedReader br = new BufferedReader(new FileReader(f)); 

它工作正常......嗯......