import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.util.Properties;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class OperationProperties {
* 动态获取配置文件内容
* @param fileName 配置文件名称
* @param key 配置文件key值
* @return 返回对应key的值
public static String getProperties(String fileName,String key) {
String ret= "";
try {
retKeyVal = PropertiesLoaderUtils.loadAllProperties(fileName).get(key).toString();
} catch (IOException e) {
e.printStackTrace();
return ret;
* 动态修改配置文件并返回修改值
* @param fileName
* @param key
* @param value
* @return value
public static String updateProperties(String fileName,String key,String value) {
try {
String filePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getFile();
filePath = URLDecoder.decode(filePath, "utf-8");
Properties props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(fileName));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
props.setProperty(key, value);
props.store(bw, "");
} catch (Exception e) {
e.printStackTrace();
return value;
修改的是运行时的配置文件(target)
获取resources下的文件路径
String path = this.getClass().getClassLoader().getResource("jdbc.properties").getFile();
String path = this.getClass().getClassLoader().getResource("jdbc.properties").getPath();
当模块打包成jar后,我们获取到的路径可能会是下面这种,这种并不是规范的文件路径,因此通过 new File() 的方式访问时,会出现Not Found的错误
file:/C:/ResourceJar.jar!/resource/res.txt
通过访问流的方式对文件进行读操作,但是jar包中的文件不能进行写操作,这就是为什么需要文件服务器
InputStream in = this.getClass().getClassLoader().getResourceAsStream("jdbc.properties");
对文件进行修改操作
String fileName = "d://test";
File file = new File(fileName);
//判断文件夹是否存在,不存在则创建
if(!file.exists()){
file.mkdirs();
File filePath = new File(fileName+"/test.txt");
//判断文件是否存在,不存在则创建
if(!filePath .exists()){
filePath.createNewFile();
//读取文件并按行将文件放入集合中
BufferedReader bufferedReader = null;
String str =null;
List<String> list = new ArrayList<>();
try {
bufferedReader = new BufferedReader(new FileReader(filePath));
while ((str = bufferedReader.readLine())!=null) {
if(str.contains("username")) {
list.add(str+"zhangsan");
continue;
list.add(str);
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
bufferedReader .close();
}catch(IOException e) {
e.printStackTrace();
//遍历集合,按行写入文件
BufferedWriter bufferedWriter = null;
try {
bufferedWriter = new BufferedWriter(new FileWriter(filePath));
for (int i = 0; i < list.size(); i++) {
if (i == list.size() -1) {
bufferedWriter.write(list.get(i));
bufferedWriter.flush();
}else {
bufferedWriter.write(list.get(i));
bufferedWriter.newLine();
bufferedWriter.flush();
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
bufferedWriter .close();
}catch(IOException e) {
e.printStackTrace();