在Java中打印指定的文件
参加Java初学者课程时,我被其中一个练习卡住了。我们要打印特定文件中的文本,我们可以通过用户输入的文件名找到该文件。在之前的练习中,我们了解到在Java中打印指定的文件,java,printing,Java,Printing,参加Java初学者课程时,我被其中一个练习卡住了。我们要打印特定文件中的文本,我们可以通过用户输入的文件名找到该文件。在之前的练习中,我们了解到 try(Scanner scanner = new Scanner(Paths.get("data.txt"))) 将在文件“data.txt”中查找文本,但我不确定如何将其转换为查找用户输入的任何文件名 更多详情见下文 练习:编写一个程序,要求用户输入一个字符串,然后用与提供的字符串匹配的名称打印文件内容。您可以假设用户
try(Scanner scanner = new Scanner(Paths.get("data.txt")))
将在文件“data.txt”中查找文本,但我不确定如何将其转换为查找用户输入的任何文件名
更多详情见下文
练习:编写一个程序,要求用户输入一个字符串,然后用与提供的字符串匹配的名称打印文件内容。您可以假设用户提供了程序可以找到的文件名
练习模板包含文件“data.txt”和“song.txt”,您可以在测试程序功能时使用这些文件。当用户输入字符串“song.txt”时,程序的输出如下所示。打印的内容来自文件“song.txt”。当然,该程序也应该与其他文件名一起工作,假设可以找到该文件
到目前为止,我的代码是:
import java.nio.file.Paths;
import java.util.Scanner;
public class PrintingASpecifiedFile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Which file should have its contents printed?");
String fileName = scanner.nextLine();
//try(Scanner scanner = new Scanner(Paths.get(fileName))) {
try(scanner = Paths.get(fileName)) { // this part of the code is underlined red
while (scanner.hasNextLine()){
String output = scanner.nextLine();
System.out.println(output);
}
}
catch (Exception e){
System.out.println("Error: " + e.getMessage());
}
}
}
我曾尝试搜索如何添加一个新的扫描仪,因为这是一个建议,但每次我尝试都会得到一个错误。此外,“尝试”部分的下划线为红色,似乎无法找出原因。带下划线的红色部分表示-source 8不支持try with resources中的变量
如果有人有建议,我会非常感激!谢谢大家! 您使用了一个
扫描仪
从控制台读取文件路径
您需要另一个扫描仪
(或读卡器替代品)来读取文件
try (Scanner fileScanner = new Scanner(fileName)) {
try (Scanner fileScanner = new Scanner(Paths.get(fileName))) {
如果它被支持,你会在那一行中得到不同的错误<代码>扫描器不是路径…看看你会看到路径。get()返回路径,而不是扫描器,所以你不能执行扫描器=路径。get(文件名)。你应该用另一个名字创建另一个扫描器<代码>扫描仪已经存在,因此只需取消注释您的
尝试
行,并将扫描仪
替换为另一个扫描仪。您还需要将中的扫描仪
替换为另一台扫描仪
。PS:别忘了关闭扫描仪。解决了它,用try(scanner=path.get(fileName))替换了try(scanner=path.get(fileName)){while(scanner.hasNextLine()){String output=scanner.nextLine();System.out.println(output);}和try(scanner userInputScan=newscanner(path.get(fileName))){while(userInputScan.hasNextLine()){String row=userInputScan.nextLine();System.out.println(row);}