📄 jadwriter.java
字号:
/* * @(#)JadWriter.java 1.2 02/07/25 @(#) * * Copyright (c) 2001-2002 Sun Microsystems, Inc. All rights reserved. * PROPRIETARY/CONFIDENTIAL * Use is subject to license terms. */package com.sun.midp.jadtool;import java.io.*;import com.sun.midp.io.Properties;/** * A class for writing JAD's. for details see * {@link #write(Properties, OutputStream, String)} */public class JadWriter { /** prevents anyone from instantiating this class */ private JadWriter() {}; /** * Writes this property list (key and element pairs) in this * <code>Properties</code> table to the output stream in a format suitable * for loading into a <code>Properties</code> table using the * <code>load</code> method. * The stream is written using the character encoding specified by * <code>enc</code>. * <p> * Then every entry in this <code>Properties</code> table is written out, * one per line. For each entry the key string is written, then an ASCII * <code>=</code>, then the associated element string. Each character of * the element string is examined to see whether it should be rendered as * an escape sequence. Characters less than <code>\u0020</code> and * characters greater than <code>\u007E</code> are written as * <code>\u</code><i>xxxx</i> for * the appropriate hexadecimal value <i>xxxx</i>. * <p> * After the entries have been written, the output stream is flushed. The * output stream remains open after this method returns. * * @param out an output stream. * @param enc character encoding used on input stream. * @exception IOException if writing this property list to the specified * output stream throws an <tt>IOException</tt>. * @exception ClassCastException if this <code>Properties</code> object * contains any keys or values that are not * <code>Strings</code>. */ public static void write(Properties props, OutputStream out, String enc) throws IOException { OutputStreamWriter awriter; awriter = new OutputStreamWriter(out, enc); // output in order. for (int idx = 0; idx < props.size(); idx++) { String key = props.getKeyAt(idx); String val = props.getValueAt(idx); if (enc.equals("ISO8859_1")) { key = saveConvert(key); val = saveConvert(val); } // don't forget the required space after the ":" writeln(awriter, key + ": " + val); } awriter.flush(); } /** * Stores properties to the output stream using the ISO 8859-1 * character encoding. * * @see #write(Properties, OutputStream, String) * @param out an output stream. * @exception IOException if writing this property list to the specified * output stream throws an <tt>IOException</tt>. * @exception ClassCastException if this <code>Properties</code> * object contains any keys or values that are not * <code>Strings</code>. */ public static void write(Properties props, OutputStream out) throws IOException { write(props, out, "UTF-8"); } private static void writeln(OutputStreamWriter ow, String s) throws IOException { ow.write(s); ow.write("\n"); } /* * Converts unicodes to encoded \uxxxx * with a preceding slash */ private static String saveConvert(String theString) { int len = theString.length(); StringBuffer outBuffer = new StringBuffer(len*2); for (int x = 0; x < len; x++) { char aChar = theString.charAt(x); // don't for get to escape the '/' if ((aChar < 0x0020) || (aChar > 0x007e) || aChar == 0x005c) { 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)); continue; } outBuffer.append(aChar); } return outBuffer.toString(); } /** * Convert a nibble to a hex character * @param nibble the nibble to convert. * @return a hex digit */ private static char toHex(int nibble) { return hexDigit[(nibble & 0xF)]; } /** A table of hex digits */ private static final char[] hexDigit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -