Java FileInputStream是否为空?
好的,这是返回null的行。创建此FileInputStream时我做错了什么Java FileInputStream是否为空?,java,file,file-io,Java,File,File Io,好的,这是返回null的行。创建此FileInputStream时我做错了什么 FileInputStream fin = new FileInputStream(new File(getClass().getResource("data/levellocks.lv").toURI())); 唯一可以为null的是getResource(“data/levellocks.lv”),它调用toURI调用失败getClass或getResource都可能返回null。其他一切都应该成功,否则会引发
FileInputStream fin = new FileInputStream(new File(getClass().getResource("data/levellocks.lv").toURI()));
唯一可以为null的是getResource(“data/levellocks.lv”),它调用toURI调用失败getClass或getResource都可能返回null。其他一切都应该成功,否则会引发异常。我实际上刚刚处理了这个问题(我不是专家),但请尝试调试,看看构造函数试图将名称解析到哪里。对我来说,这是全班的套餐。因此,当我将文件放入预期文件夹时,它找到了它
对你来说可能会不一样,因为我用的是maven。但是我把它放在src/main/resources中,它找不到。当我在com.work.hin.terminology.match(该类的包)的src/main/resources中放置一个文件夹结构时,它找到了它 除非您确实需要文件输入流,否则您可以将行简化为:
InputStream in = getClass().getResourceAsStream("data/levellocks.lv");
Class.getResource()和Class.getResourceAsStream是相对于包的。要获取相对于类路径根的文件,可以在类加载器上调用以下方法:
InputStream in = getClass().getClassLoader().getResourceAsStream("data/levellocks.lv");
是否确保该文件位于二进制文件夹中.class文件旁边?不仅仅是在.java文件旁边的源文件夹中?到底哪个部分是
null
?它不能是fin,因为new
从不返回null
。但是如果文件在那里,它还能是null吗?因为我检查了两次,它看起来不像你想象的那样