Java生成带注释properties属性文件
2017-12-19 14:57
169 查看
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 ':': < 4000 span class="hljs-comment">// 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); } }
相关文章推荐
- java通过xml配置属性用iText包生成pdf文件
- android:查找布局文件中有id属性的内容,并生成java转换代码
- 一个简单生成Excel文件格式的java包。
- 如何将做好的JAVA程序生成可执行文件
- 如何将JAVA生成可执行文件?
- 利用Eclipse和JSmooth生成java EXE可执行文件
- java实现读取flash的swf文件属性
- 属性文件在JAVA中的应用(原创)
- 利用Eclipse和JSmooth生成java EXE可执行文件
- java映射oracle生成一些映射文件
- 生成一个java编制的可执行文件
- java应用程序中动态生成PDF文件
- 从 Java 应用程序动态生成 PDF 文件
- Java属性文件的一个缺憾(Java缺点之二:属性文件)
- java从数据库导数据生成txt文件的中文编码问题
- 直接用 java 命令行动态生成jpg文件
- 使用hibernate扩展工具Hbm2JavaTask根据配置文件生成持久化对象类(2.1.2)
- 利用Eclipse和JSmooth生成java EXE可执行文件 (转)
- 属性文件在JAVA中的应用
- 生成一个java编制的可执行文件