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

我编写了这个简单的程序来尝试从我电脑 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)

我正在关注核心 Java 第 1 卷第 11 版中的示例程序,我已经查看了所有内容,试图找出我出错的地方,但无济于事。任何帮助将不胜感激。


翻阅古今
浏览 178回答 4
4回答

天涯尽头无女友

与某些评论者所说的相反,您尝试使用的方法确实存在。有问题的方法需要一个必需的第一个参数,然后是可变数量的参数,由varargs 构造实现,这意味着零个或多个参数。但它只能从 Java 11 开始使用。您需要检查您的 Java 版本。另一种方法是您将扫描仪与另一个参数一起使用:new Scanner(new File(D:/test.txt), StandardCharsets.UTF_8); 或者new Scanner(Paths.get(D:/test.txt), StandardCharsets.UTF_8)构造函数分别抛出 aFileNotFoundException和 an IOException。确保您处理它或将其传播给调用者。注意:一个快速的本地测试告诉我这实际上对我有用。因此,如果您的代码仍然抛出 a FileNoteFoundException,我的猜测是文件或文件名存在其他问题。

慕侠2389804

该Path.of()方法在 JDK 11 中添加,需要一个URIas 参数,而不是一个String. 例如,Scanner input = new Scanner(Path.of(new URI("file:///D:/test.txt")), StandardCharsets.UTF_8);或者你可以简单地使用new Scanner(File),正如其他答案所说。

饮歌长啸

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

幕布斯7119047

尝试如下初始化您的扫描仪,您不需要路径:Scanner input = new Scanner(new File("D:\\test.txt") , StandardCharsets.UTF_8);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java