file format
The file in the resources directory, configuration items are required for the project
in the format: key = value, of course, here = only to improve readability, can be replaced by other symbols!
Read code
Approach is to configure the key file names and values of the file is read out into the map set, and then retrieve the values map.get (key)
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
/**
* 读取resource目录下的配置文件(文件为文档类型的配置文件)
*/
public class ResourcesUtil {
public static Logger logger = Logger.getLogger(ResourcesUtil.class);
public String configurationFileName;
public File file;
//读取配置文件中的键值对
public Map<String, String> configurationMap = new HashMap<>();
//参数为配置文件的名称
public ResourcesUtil(String configurationFileName) {
this.configurationFileName = configurationFileName;
try {
Resource res = new ClassPathResource(configurationFileName);
File f = res.getFile();
if (!f.exists()) {
logger.error("预处理转换类初始化出错,找不见" + configurationFileName + "文件...");
return;
}
this.file = f;
//存放配置文件中的每一行
List<String> lines = FileUtils.readLines(f, "UTF-8");
configurationMap = new HashMap<String, String>();
for (String line : lines) {
if (StringUtils.isBlank(line)) {
continue; //读取的行为空值的场合
}
line = line.trim();
if (line.startsWith("#")) {
continue; //读取行以字符"#"开头,为注释的场合
}
//查询配置行中是否有"="符号
//如果你们项目的文件中不是以=相隔 这里就需要替换代码为你的符号
int equalFlagIndex = line.indexOf("=");
//提取"="之前的字符串作为key
String key = line.substring(0, equalFlagIndex).trim();
//提取"="之后的字符串作为value
String value = line.substring(equalFlagIndex + 1).trim();
configurationMap.put(key, value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 读取配置文件configuration中的指定字段的值
*
* @param key ..
* @return ..
*/
public String getValue(String key) {
return configurationMap.get(key);
}
public void setValue(Map<String, String> valueMap) {
BufferedWriter writer = null;
Set<Map.Entry<String, String>> entries = valueMap.entrySet();
List<String> list = new ArrayList<>(0);
for (Map.Entry<String, String> map : entries) {
list.add(map.getKey() + "=" + map.getValue());
}
try {
writer = new BufferedWriter(new FileWriter(file));
for (String s : list) {
writer.write(s);
writer.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//main方法测试读取
public static void main(String[] args) {
ResourcesUtil resourcesUtil = new ResourcesUtil("defaultUserInfo.txt");
String userName = resourcesUtil.getValue("userName");
System.out.println(userName);
}