程序只读一行而不是整个文件

时间:2014-06-10 23:49:05

标签: java token filereader

    public static void main(String ar[]) throws FileNotFoundException{
    scan = new Scanner(new FileReader(new File("files.txt")));
    String nextLine = scan.nextLine();
    String[] fileNames = nextLine.split("\\s+");

    for(int i=0;i<fileNames.length;i++){
        System.out.println(fileNames[i]);
    }


    for(int i=0;i<nextLine.length();i++){
        char c = nextLine.charAt(i);
        boolean isWhiteSpace = isWhiteSpace(c);
        if(isWhiteSpace){
            if(c == ' ')
                System.out.println("white space (blank) at index "+i);
            if(c == '\n')
                System.out.println("white space (line feed) at index "+i);
            if(c == '\r')
                System.out.println("white space (\\r - carriage return) at index "+i);
            if(c == '\t')
                System.out.println("white space (\\t - tab) at index "+i);
        }
    }

} 

我需要帮助来解决这个问题。显然我的程序只识别文件中的第一行,当它应该读取内容的整个文件时。

我需要做些什么改变?谢谢。

4 个答案:

答案 0 :(得分:3)

嗯,这是因为您只从文件中读取一行:

scan = new Scanner(new FileReader(new File("files.txt")));
String nextLine = scan.nextLine();

要读取整个文件,您必须调用scan.nextLine(),直到到达文件末尾。要检查文件结尾,可以执行while循环,然后遍历整个文件:

Scanner input = new Scanner(new File("\""+filename+"\""));
while(input.hasNextLine())
{
    String data = input.nextLine();
    //Do what you want with one line which is at each iteration stored in data
}

答案 1 :(得分:0)

您似乎只使用String nextLine = scan.nextLine();一次!

答案 2 :(得分:0)

String nextLine = scan.nextLine();

在我看来,只接受文件中的一行,使用您的扫描仪&#34;扫描&#34;。因此,您只能从相关文件中获取一行。

答案 3 :(得分:0)

您只调用方法nextLine()一次,因此您只能在程序中读取1行。您必须添加for循环以继续阅读所有可用行。