⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertiesreader.java

📁 在Struts2中的jar包xwork的源代码.版本为2.0.7
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                case 2:                    if (contains(WHITE_SPACE, c))                    {                        // do nothing, eat all white spaces                        state = 2;                    }                    else if (contains(SEPARATORS, c))                    {                        // switch to the value parsing state                        state = 3;                    }                    else                    {                        // any other character indicates we encoutered the beginning of the value                        value.append(c);                        // switch to the value parsing state                        state = 3;                    }                    break;                case 3:                    value.append(c);                    break;            }        }        result[0] = key.toString().trim();        result[1] = value.toString().trim();        return result;    }        /**     * <p>Unescapes any Java literals found in the <code>String</code> to a     * <code>Writer</code>.</p> This is a slightly modified version of the     * StringEscapeUtils.unescapeJava() function in commons-lang that doesn't     * drop escaped separators (i.e '\,').     *     * @param str  the <code>String</code> to unescape, may be null     * @param delimiter the delimiter for multi-valued properties     * @return the processed string     * @throws IllegalArgumentException if the Writer is <code>null</code>     */    protected static String unescapeJava(String str, char delimiter)    {        if (str == null)        {            return null;        }        int sz = str.length();        StringBuffer out = new StringBuffer(sz);        StringBuffer unicode = new StringBuffer(UNICODE_LEN);        boolean hadSlash = false;        boolean inUnicode = false;        for (int i = 0; i < sz; i++)        {            char ch = str.charAt(i);            if (inUnicode)            {                // if in unicode, then we're reading unicode                // values in somehow                unicode.append(ch);                if (unicode.length() == UNICODE_LEN)                {                    // unicode now contains the four hex digits                    // which represents our unicode character                    try                    {                        int value = Integer.parseInt(unicode.toString(), HEX_RADIX);                        out.append((char) value);                        unicode.setLength(0);                        inUnicode = false;                        hadSlash = false;                    }                    catch (NumberFormatException nfe)                    {                        throw new RuntimeException("Unable to parse unicode value: " + unicode, nfe);                    }                }                continue;            }            if (hadSlash)            {                // handle an escaped value                hadSlash = false;                if (ch == '\\')                {                    out.append('\\');                }                else if (ch == '\'')                {                    out.append('\'');                }                else if (ch == '\"')                {                    out.append('"');                }                else if (ch == 'r')                {                    out.append('\r');                }                else if (ch == 'f')                {                    out.append('\f');                }                else if (ch == 't')                {                    out.append('\t');                }                else if (ch == 'n')                {                    out.append('\n');                }                else if (ch == 'b')                {                    out.append('\b');                }                else if (ch == delimiter)                {                    out.append('\\');                    out.append(delimiter);                }                else if (ch == 'u')                {                    // uh-oh, we're in unicode country....                    inUnicode = true;                }                else                {                    out.append(ch);                }                continue;            }            else if (ch == '\\')            {                hadSlash = true;                continue;            }            out.append(ch);        }        if (hadSlash)        {            // then we're in the weird case of a \ at the end of the            // string, let's output it anyway.            out.append('\\');        }        return out.toString();    }        /**     * <p>Checks if the object is in the given array.</p>     *     * <p>The method returns <code>false</code> if a <code>null</code> array is passed in.</p>     *      * @param array  the array to search through     * @param objectToFind  the object to find     * @return <code>true</code> if the array contains the object     */    public boolean contains(char[] array, char objectToFind) {        if (array == null) {            return false;        }        for (int i = 0; i < array.length; i++) {            if (objectToFind == array[i]) {                return true;            }        }        return false;    }        /**     * <p>Unescapes any Java literals found in the <code>String</code>.     * For example, it will turn a sequence of <code>'\'</code> and     * <code>'n'</code> into a newline character, unless the <code>'\'</code>     * is preceded by another <code>'\'</code>.</p>     *      * @param str  the <code>String</code> to unescape, may be null     * @return a new unescaped <code>String</code>, <code>null</code> if null string input     */    public static String unescapeJava(String str) {        if (str == null) {            return null;        }        try {            StringWriter writer = new StringWriter(str.length());            unescapeJava(writer, str);            return writer.toString();        } catch (IOException ioe) {            // this should never ever happen while writing to a StringWriter            ioe.printStackTrace();            return null;        }    }    /**     * <p>Unescapes any Java literals found in the <code>String</code> to a     * <code>Writer</code>.</p>     *     * <p>For example, it will turn a sequence of <code>'\'</code> and     * <code>'n'</code> into a newline character, unless the <code>'\'</code>     * is preceded by another <code>'\'</code>.</p>     *      * <p>A <code>null</code> string input has no effect.</p>     *      * @param out  the <code>Writer</code> used to output unescaped characters     * @param str  the <code>String</code> to unescape, may be null     * @throws IllegalArgumentException if the Writer is <code>null</code>     * @throws IOException if error occurs on underlying Writer     */    public static void unescapeJava(Writer out, String str) throws IOException {        if (out == null) {            throw new IllegalArgumentException("The Writer must not be null");        }        if (str == null) {            return;        }        int sz = str.length();        StringBuffer unicode = new StringBuffer(4);        boolean hadSlash = false;        boolean inUnicode = false;        for (int i = 0; i < sz; i++) {            char ch = str.charAt(i);            if (inUnicode) {                // if in unicode, then we're reading unicode                // values in somehow                unicode.append(ch);                if (unicode.length() == 4) {                    // unicode now contains the four hex digits                    // which represents our unicode character                    try {                        int value = Integer.parseInt(unicode.toString(), 16);                        out.write((char) value);                        unicode.setLength(0);                        inUnicode = false;                        hadSlash = false;                    } catch (NumberFormatException nfe) {                        throw new RuntimeException("Unable to parse unicode value: " + unicode, nfe);                    }                }                continue;            }            if (hadSlash) {                // handle an escaped value                hadSlash = false;                switch (ch) {                    case '\\':                        out.write('\\');                        break;                    case '\'':                        out.write('\'');                        break;                    case '\"':                        out.write('"');                        break;                    case 'r':                        out.write('\r');                        break;                    case 'f':                        out.write('\f');                        break;                    case 't':                        out.write('\t');                        break;                    case 'n':                        out.write('\n');                        break;                    case 'b':                        out.write('\b');                        break;                    case 'u':                        {                            // uh-oh, we're in unicode country....                            inUnicode = true;                            break;                        }                    default :                        out.write(ch);                        break;                }                continue;            } else if (ch == '\\') {                hadSlash = true;                continue;            }            out.write(ch);        }        if (hadSlash) {            // then we're in the weird case of a \ at the end of the            // string, let's output it anyway.            out.write('\\');        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -