【问题标题】:InputStream's FileInputStream in JavaJava 中 InputStream 的 FileInputStream
【发布时间】:2020-04-30 09:32:21
【问题描述】:

这是打开“mat1.txt”文件的正确方法吗,因为 eclipse IDE 出错了?

InputStream fstream = new FileInputStream("C:\\eclipse-workspace\\edu\\iitd\\col1062020\\mat1.txt");

错误:

未处理的异常类型 FileNotFoundException

从错误中,它无法找到该文件,但我已将其放置在提供的路径中。 (见下文)

是因为C盘的访问权限吗?

【问题讨论】:

  • new FileInputStream 打开文件,这会抛出一个IOException,例如FileNotFoundException。解决方案try { .... } catch (IOException e) { e.printStackTrace()); }
  • 谢谢,这样做没有显示错误。但是你能说出为什么它在不进行异常处理时显示错误吗?在 Python 等其他语言中,情况并非如此,因为只有在无法访问代码时才会显示错误。在 python 中,如果它可以访问文件,即使我们没有进行任何异常处理,它也不会显示任何错误。

标签: java file class input main


【解决方案1】:

试试这个:

InputStream fstream = new FileInputStream("C:\\eclipse-workspace\\edu\\iitd\\col1062020\\mat1.txt");

您应该使用 try catch 包装您的文件访问权限!下面的 try catch 结构也使用了自动关闭功能! https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

    try (InputStream fstream = new FileInputStream("C:\\eclipse-workspace\\edu\\iitd\\col1062020\\mat1.txt")) {
        // consume your InputStream
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

【讨论】:

    【解决方案2】:

    我看到你写了eclipseworkspace,但路径中有一个减号:eclipse-workspace

    【讨论】:

    • 实际上我在我的代码中编写了 eclipse-workspace。它一定是别的东西
    • 好的,如果你写了正确的路径,错误应该是缺少 try/catch 块。只需按照 CodingSamples 在其他答案中的建议添加即可:)
    • 谢谢。并且在这样做之后它没有显示错误。但是你能说出为什么它在不进行异常处理时显示错误吗?在 Python 等其他语言中,情况并非如此,因为只有在无法访问代码时才会显示错误。在 python 中,如果它可以访问文件,即使我们没有进行任何异常处理,它也不会显示任何错误。
    • 可能路径错误,在您的第一篇文章中链接...这就是异常 FileNotFoundException 的含义...在 java 中您必须处理异常(RuntimeException 除外)
    • Java 的异常处理其实是一种强大的机制:可以防止程序崩溃,还可以添加对用户有用的描述性消息。如果您想了解有关此主题的更多信息,建议您查看this 链接。如果您想了解 Java 中异常处理的一些最佳实践,您也可以查看 this 链接 :)
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2018-11-08
    • 2013-07-06
    • 1970-01-01
    • 2014-10-25
    • 2023-03-26
    相关资源
    最近更新 更多