【问题标题】:How to refresh src/main/resources folder while executing the code?执行代码时如何刷新 src/main/resources 文件夹?
【发布时间】:2016-02-08 15:52:05
【问题描述】:

当我运行我的 main 方法时,它会创建 src/main/resources/sample.txt 文件,然后读取它的内容。每当我运行代码时,它会给出 java.lang.NullPointerException,当涉及到读取 src/main/resources/sample.txt 时。但是,当我刷新项目时,它会读取 sample.txt 但 不是 新内容,它会读取 old 内容。 在阅读文本文件之前,我似乎需要在 eclipse 中刷新 java 项目。 有没有办法在执行时刷新 src/main/resources?

【问题讨论】:

    标签: java eclipse file refresh


    【解决方案1】:

    如果您能够写入该文件,那么您应该能够读取它。

    我的猜测是您正在使用文件路径src/main/resources 编写它, 但是您正在使用ClassLoader.getResource 阅读它,它从类路径target/classes 中读取。

    当您刷新项目并 eclipse 构建它时,src/main/resources 中的 source 文件被复制到 target/classes,使它们在类路径中作为资源可用。

    我建议不要在src/main/resources 中编写任何内容,因为这仅在您从项目目录执行项目时才有效。

    通常,ClassLoader 的类路径是在程序启动期间设置的。根据它的缓存实现,类加载器通常不可能获取类路径中文件的更改。您需要创建一个新的 ClassLoader 并丢弃旧的 ClassLoader,但这对于这种情况来说太复杂了。

    要读取文件,请使用与编写文件类似的代码:如果使用 FileWriter,请使用 FileReader;如果您使用 FileOutputStream,请使用 FileInputstream 等。

    【讨论】:

    • 是的,你完全正确。这就是我阅读文本文件 TestClass.class.getClassLoader().getResource("sample.txt") 的方式。是否有另一种从 TestClass.class 读取“/anypath/sample.txt”的方法?
    • 答案已更新。我不确定这是否正是您要寻找的;写入文件然后读取它有点奇怪,因为您可以将内容保存在内存中。所以如果我不在,你能提供一些代码或更多细节吗?
    • 好吧,我找到了一个方法 File file= new File("/home/anypath/sample.txt");
    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 2015-09-16
    • 1970-01-01
    • 2012-05-06
    • 2015-02-26
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多