当我运行main方法时,它会创建src / main / resources / sample.txt文件,然后读取它的内容。每当我运行代码时,它会提供 java.lang.NullPointerException ,当涉及到读取src / main / resources / sample.txt时。但是,当我刷新项目时,它会读取sample.txt但不新内容,它会读取旧内容。 在阅读文本文件之前,我似乎需要在eclipse中刷新java项目。 有没有办法在执行时刷新src / main / resources?
答案 0 :(得分:2)
如果您能够编写该文件,那么您应该能够阅读它。
我猜您是使用文件路径src/main/resources
编写的,
但是你正在使用ClassLoader.getResource
来阅读它,它从类路径target/classes
读取。
当你刷新项目并且eclipse构建它时,src/main/resources
中的源文件被复制到target/classes
,使它们在类路径中作为资源可用。
我建议不要在src/main/resources
中写任何内容,因为只有在从项目目录执行项目时才有效。
通常,在程序启动期间设置ClassLoader的类路径。根据它的缓存实现,类加载器通常不可能获取类路径中文件的更改。您需要创建一个新的ClassLoader并丢弃旧的ClassLoader,但这对于这种情况来说太复杂了。
要读取文件,请使用与编写文件类似的代码:如果使用FileWriter,请使用FileReader;如果您使用FileOutputStream,请使用FileInputstream等