我编写了这个简单程序,试图从计算机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中找到的示例程序,我四处张望,试图找出哪里出了错,无济于事。任何帮助将不胜感激。
答案 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)
构造函数分别抛出FileNotFoundException
和IOException
。确保您处理它或将其传播给呼叫者。
注意:快速本地测试告诉我这实际上对我有用。因此,如果您的代码仍然抛出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