文件格式
该文件在resources目录下,是项目所需的配置项
格式为:键名=值,当然这里=只是为了提高可读性,替换成别的符号也可以!
读取的代码
对文件的处理方式是将该文件的配置键名和值读取出来放入map集合中,然后通过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);
}