试图让扫描仪扫描整个文件

Trying to get Scanner to scan entire file

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

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

所以我想弄清楚如何让我的变量 fileContents 保存来自扫描仪的所有文件。按照我目前的设置方式,变量 fileContents 只剩下 .txt 文件的最后一行。对于我正在做的事情,我需要它来保存文件中的整个文本。空格、字符和所有。

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

你需要改变

fileContents += fileScanner.nextLine();  

 fileContents  =fileContents + fileScanner.nextLine(); 

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

        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 来让您知道您是 'appending' 或者换句话说,只是添加到您希望使用的数据。按照您的方式,您将获得文本的最后一行,因为它会不断覆盖之前的数据。

你也可以使用下面的:

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

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