【问题标题】:JAVA - "no such file or directory" - ScannerJAVA - “没有这样的文件或目录” - 扫描仪
【发布时间】:2017-11-05 20:20:50
【问题描述】:

为什么下面的代码会抛出 No Such File Found 异常?路径正确,文件确实存在。

代码:

java.util.Scanner s = new java.util.Scanner(
    new File(getClass().getResource("file.txt").getFile())); 

【问题讨论】:

标签: java java.util.scanner filenotfoundexception file-not-found


【解决方案1】:

我应该使用流,而不是文件..

代码:

java.util.Scanner s = new java.util.Scanner(
    getClass().getResourceAsStream("file.txt")‌​);

【讨论】:

    【解决方案2】:

    您的陈述末尾缺少一个 ) 。正确的说法应该如下:- Scanner s = new Scanner(new File(getClass().getResource("file.txt").getFile()));

    如果这不是您想要的,那么这可能就是您可能面临的错误情况。 我假设您正在 main() 方法中编写这段代码。由于 main 被标记为静态方法,并且您正在使用作为非静态方法的 getClass(),因此您应该收到一条错误消息:“无法从类型中对非静态方法 getClass() 进行静态引用对象”。

    另外,你把你的文本文件放在哪里了?该位置是否存在于您的课程路径中?如果不是,则必须包含它,否则必须在 getResource 方法中提供文件的完整路径。

    也许您可以就您发布的问题提供更多见解??

    【讨论】:

    • 该文件与 Main 类位于同一文件夹中。而且我没有在main方法中写,所以代码没有产生其他错误。
    • hmmm...这很奇怪,因为我刚刚尝试了您的代码,它工作得很好。公共类文件 { public void m1() { try { Scanner s = new Scanner(new File(getClass().getResource("file.txt").getFile())); System.out.println("文件找到!!"); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } public static void main(String[] args) { new file().m1();该文件是 src/main/java/testpackage/file.txt 中的关键,这个主类正在从 src/main/java/testpackage 位置运行。
    • 对我来说 "java.util.Scanner s = new java.util.Scanner(getClass().getResourceAsStream("file.txt"));"工作得很好:)
    猜你喜欢
    • 2018-04-16
    • 2015-09-25
    • 2018-01-28
    • 2020-08-05
    • 2017-12-14
    • 2018-12-30
    • 1970-01-01
    • 2021-06-24
    • 2015-02-20
    相关资源
    最近更新 更多