试图让扫描仪扫描整个文件
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 循环。
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 循环。