Java生成带注释properties属性文件
来源:互联网 发布:vmware上安装mac os 编辑:程序博客网 时间:2024/05/16 16:57
import java.io.BufferedWriter; import java.io.IOException; import java.io.Writer; import java.util.Date; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Properties; public class OutputOrderProperties extends Properties { private LinkedHashMap<String, String> commentMap = new LinkedHashMap<String,String>(); private static final long serialVersionUID = 1L; public OutputOrderProperties() { super(); } public OutputOrderProperties(Properties properties) { super(properties); Iterator<Object> iterator = properties.keySet().iterator(); while(iterator.hasNext()) { Object key = iterator.next(); this.commentMap.put((String) key, null); } } public boolean addComment(String key , String comment) { if(this.contains(key)) { this.commentMap.put(key, comment); return true; } return false; } public void put(String key , String value , String comment) { this.commentMap.put(key, comment); this.setProperty(key, value); } public void put(String key , String value) { this.setProperty(key, value); } public void orderStore(Writer writer , String comments) throws IOException { BufferedWriter bufferedWriter = (writer instanceof BufferedWriter) ? (BufferedWriter)writer : new BufferedWriter(writer); if (comments != null) { OutputOrderProperties.writeComments(bufferedWriter, comments); } synchronized (this) { Iterator<String> iterator = this.commentMap.keySet().iterator(); while(iterator.hasNext()) { String key = iterator.next(); String value = this.getProperty(key); String comment = this.commentMap.get(key); key = saveConvert(key, true, false); value = saveConvert(value, false, false); key = saveConvert(key, true, false); if(comment != null && ! comment.equals("")) { writeComments(bufferedWriter, comment); } bufferedWriter.write(key+"="+value); bufferedWriter.newLine(); } } bufferedWriter.flush(); } private String saveConvert(String theString,boolean escapeSpace, boolean escapeUnicode) { int len = theString.length(); int bufLen = len * 2; if (bufLen < 0) { bufLen = Integer.MAX_VALUE; } StringBuffer outBuffer = new StringBuffer(bufLen); for(int x=0; x<len; x++) { char aChar = theString.charAt(x); if ((aChar > 61) && (aChar < 127)) { if (aChar == '\\') { outBuffer.append('\\'); outBuffer.append('\\'); continue; } outBuffer.append(aChar); continue; } switch(aChar) { case ' ': if (x == 0 || escapeSpace) outBuffer.append('\\'); outBuffer.append(' '); break; case '\t':outBuffer.append('\\'); outBuffer.append('t'); break; case '\n':outBuffer.append('\\'); outBuffer.append('n'); break; case '\r':outBuffer.append('\\'); outBuffer.append('r'); break; case '\f':outBuffer.append('\\'); outBuffer.append('f'); break; case '=': // Fall through case ':': // Fall through case '#': // Fall through case '!': outBuffer.append('\\'); outBuffer.append(aChar); break; default: if (((aChar < 0x0020) || (aChar > 0x007e)) & escapeUnicode ) { outBuffer.append('\\'); outBuffer.append('u'); outBuffer.append(toHex((aChar >> 12) & 0xF)); outBuffer.append(toHex((aChar >> 8) & 0xF)); outBuffer.append(toHex((aChar >> 4) & 0xF)); outBuffer.append(toHex( aChar & 0xF)); } else { outBuffer.append(aChar); } } } return outBuffer.toString(); } private static void writeComments(BufferedWriter bw, String comments)throws IOException { bw.write("#"); bw.write(comments); bw.newLine(); } private static char toHex(int nibble) { return hexDigit[(nibble & 0xF)]; } private static final char[] hexDigit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; }
调用测试:
public class Test { public static void main(String[] args) { OutputOrderProperties p = new OutputOrderProperties(); FileInputStream fs = new FileInputStream("模板文件路径"); p.load(new InputStreamReader(fs, "utf-8")); p.put("jdbc.name", dbConfig.getJdbcName(),"jdbc名称"); p.orderStore(new OutputStreamWriter(os1, "utf-8"), null); }}
阅读全文
0 0
- Java生成带注释properties属性文件
- java读取properties属性文件
- JAVA读写Properties属性文件
- JAVA读写Properties属性文件
- java读取properties属性文件
- java 读取 properties 属性文件
- java操作.properties属性文件
- Java读写Properties属性文件
- java读properties属性文件
- java 读取属性文件 properties
- java读取Properties属性文件
- Java 带参数Properties文件的操作
- java读取属性文件properties文件
- properties文件写注释
- Struts_default.properties文件注释
- 属性文件读写java.util.Properties
- java读取properties属性文件值方法
- 使用JAVA读写Properties属性文件
- android中自定义属性TypedArray的用法
- 一行注解处理Android23+权限 AbcPermission 重要更新
- typedef用法总结
- Nginx + CGI/FastCGI + C/Cpp
- 关于导出pdf的注意点
- Java生成带注释properties属性文件
- 如何往适配器里添加数据
- 基于SPRING CLOUD开发的基础环境搭建
- Linux 内存映射函数 mmap()函数详解
- 散点图的python和R展现以及热力图与向日葵散点图
- subString()造成内存泄露
- 本机正常到别人机子运行异常的问题
- 图片尺寸批量resize的matlab并行代码
- iOS监听来电