读取和写入资源文件夹Maven中的文件

时间:2015-05-28 10:14:05

标签: java maven classpath

我正在编写用于读写文件的代码,该代码存在于Maven项目的src/main/resources文件夹中,但代码正在读取和写入"project/target/classes/config.properties"中的文件,但我需要读/写"project/src/main/resources/config.properties"中存在的文件。下面是一段代码,我写道:

public class PropertyFileReader {
    private static final Logger LOGGER = LoggerFactory
            .getLogger(PropertyFileReader.class);

    private static Properties prop;

    static {
        prop = new Properties();
    }

    public static void main(String[] args) {
        String property = read("config.properties", "number");
        System.out.println(property);
        write("config.properties", "number", "6");
    }

    public static String read(final String fileName, final String propertyName) {
        File file = getpropertyFile(fileName);
        try (InputStream input = new FileInputStream(file)) {
            prop.load(input);
        } catch (IOException ex) {
            LOGGER.error("Error occurred while reading property from file : ",
                    ex);
        }
        return prop.getProperty(propertyName);
    }

    public static void write(final String fileName, final String propertName,
            String propertyValue) {
        File file = getpropertyFile(fileName);
        try (OutputStream output = new FileOutputStream(file)) {
            prop.setProperty(propertName, propertyValue);
            prop.store(output, null);
        } catch (IOException io) {
            LOGGER.error("Error occurred while writing property to file : ",
                    io);
        }
    }

    private static File getpropertyFile(final String fileName) {
        ClassLoader classLoader = PropertyFileReader.class.getClassLoader();
        return new File(classLoader.getResource(fileName).getFile());
    }
}

我还阅读了与之相关的各种帖子,建议在添加<RESOURCE_PATH>${project.basedir}/src/main/resources</RESOURCE_PATH>的情况下对pom.xml进行一些更改。但我不知道应该怎么做。

你能否指导我实施同样的方法。 感谢。

1 个答案:

答案 0 :(得分:0)

您无法编辑jar文件中的文件。相反,您可以从jar文件中的文件创建临时文件。

static File stream2file(InputStream in) throws IOException {
    File tempFile = File.createTempFile("stringOfYourChoice", ".tmp");
    tempFile.deleteOnExit();
    Files.copy(in, tempFile.toPath(), REPLACE_EXISTING)
    return tempFile;
}