使用Scanner类从文件读取信息时遇到问题

时间:2019-03-05 10:48:38

标签: java

我编写了这个简单程序,试图从计算机D驱动器中的txt文件中读取信息。

package readDisk;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.*;

public class ReadDisk 
{
    public static void main(String[] args) {
    Scanner input = new Scanner(Path.of("D:\\test.txt"), StandardCharsets.UTF_8);
    String TestText = input.nextLine();
    System.out.println(TestText);
    }
}

编译时出现错误消息

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method of(String) is undefined for the type Path

    at readDisk.ReadDisk.main(ReadDisk.java:9)

我正在跟踪在第11版Core Java Volume 1中找到的示例程序,我四处张望,试图找出哪里出了错,无济于事。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

与某些评论者所说的相反,您正在尝试使用does actually exist的方法。所讨论的方法需要一个必需的第一个参数,然后是由varargs construct来实现的可变数量的参数,这意味着zero or more个参数。

但是它仅从Java 11起可用。您需要检查Java版本。

另一种选择是您使用带有其他参数的扫描器:

  • new Scanner(new File(D:/test.txt), StandardCharsets.UTF_8);或
  • new Scanner(Paths.get(D:/test.txt), StandardCharsets.UTF_8)

构造函数分别抛出FileNotFoundExceptionIOException。确保您处理它或将其传播给呼叫者。


注意:快速本地测试告诉我这实际上对我有用。因此,如果您的代码仍然抛出FileNoteFoundException,我想文件或文件名可能有其他问题。

答案 1 :(得分:0)

尝试按以下方式初始化扫描仪,您无需为此设置路径:

Scanner input = new Scanner(new File("D:\\test.txt") , StandardCharsets.UTF_8);

答案 2 :(得分:0)

JDK 11中添加的Path.of()方法需要一个URI作为参数,而不是String。例如,

Scanner input = new Scanner(Path.of(new URI("file:///D:/test.txt")), StandardCharsets.UTF_8);

或者您也可以直接使用new Scanner(File),如其他答案所述。

答案 3 :(得分:0)

您的代码很好Path::of方法只能使用一个参数,因为第二个参数是vararg。只要确保您使用的是Java 11