我正在编写用于读写文件的代码,该代码存在于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进行一些更改。但我不知道应该怎么做。
你能否指导我实施同样的方法。 感谢。
答案 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;
}