试图让Scanner扫描整个文件

时间:2015-04-25 06:57:59

标签: java java.util.scanner

String userInput = stdin.nextLine();                        
file = new File(userInput);

Scanner fileScanner = new Scanner(file);    
while(fileScanner.hasNext()) {                  
    fileContents = fileScanner.nextLine();
}

所以我试图找出如何让我的变量fileContents来保存扫描仪中的所有文件。使用当前的方式我设置变量fileContents只剩下.txt文件的最后一行。对于我正在做的事情,我需要它来保存文件中的整个文本。空间,字符和所有。

我确信有一个简单的解决方法,我只是java /编码的新手。

3 个答案:

答案 0 :(得分:0)

您需要更改

fileContents += fileScanner.nextLine();  

 fileContents  =fileContents + fileScanner.nextLine(); 

使用您的方法,您将重新分配fileContents值,而不需要连接下一行。

答案 1 :(得分:0)

        String userInput = stdin.nextLine();                        
        file = new File(userInput);
        StringBuilder sb = new StringBuilder();

        Scanner fileScanner = new Scanner(file);    
        while(fileScanner.hasNext()) {
            sb.append(fileScanner.nextLine()+"\n");
        }
        System.out.println(sb.toString());

或者按照@ singhakash的回答,因为我认为他的表现更快。但是我使用了一个StringBuilder来让你知道你正在追加'换句话说,只需添加您想要使用的数据。按照您的方式,您将获得文本的最后一行,因为它会一直覆盖以前的数据。

答案 2 :(得分:0)

你也可以在下面使用:

Scanner sc = new Scanner(new File("C:/abc.txt"));
String fileContents = sc.useDelimiter("\\A").next();

在这种情况下,您不必使用while循环。