在Java中打印指定的文件

在Java中打印指定的文件,java,printing,Java,Printing,参加Java初学者课程时,我被其中一个练习卡住了。我们要打印特定文件中的文本,我们可以通过用户输入的文件名找到该文件。在之前的练习中,我们了解到 try(Scanner scanner = new Scanner(Paths.get("data.txt"))) 将在文件“data.txt”中查找文本,但我不确定如何将其转换为查找用户输入的任何文件名 更多详情见下文 练习:编写一个程序,要求用户输入一个字符串,然后用与提供的字符串匹配的名称打印文件内容。您可以假设用户

参加Java初学者课程时,我被其中一个练习卡住了。我们要打印特定文件中的文本,我们可以通过用户输入的文件名找到该文件。在之前的练习中,我们了解到

    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);}