fileurl.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 160 行

JAVA
160
字号
/* *    * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package com.sun.midp.io;/** * Parse path to file storage. * Can work like encoder: searching unsafe characters and * replace its on its US-ASCII hexadecimal representation. * Also doing back work: decodes encoded file path. * Based on RFC 1738.  * <p> * Checks file path for encoding unsafe characters  * and vice versa.  */public class FileUrl {        /** Array of unsafe characters. */    private final static char[] unsafeCharacters = {        ' ', '<', '>', '{', '}', '|',        '\\', '^', '~', '[', ']', '`', '%'    };        /** Array of unsafe characters ASCII codes. */    private final static String[] charactersASCIICode = {        "%20", "%3C", "%3E", "%7B", "%7D", "%7C",        "%5C", "%5E", "%7E", "%5B", "%5D", "%60", "%26"    };        /** Prevents anyone from instantiating this class */    private FileUrl() {            }            /**     * Decode file path: if it contains US-ASCII symbols,     * than reverse its on its literal representation.     *      * @param filenamepath  path to filename     * @return  decoded string of file path     */    public static String decodeFilePath(String filenamepath) {        if (filenamepath == null) {            return null;        } else {            char[] fileChars  = new char[filenamepath.length()];            StringBuffer buffer = new StringBuffer(filenamepath.length());            char temp;                            filenamepath.getChars(0,filenamepath.length(),fileChars,0);                    for (int i = 0; i < fileChars.length ; i++) {                                if (fileChars[i] == '%' && i < fileChars.length-2) {                                        temp = decodeASCIISymbol(filenamepath.substring(i,i+3));                                        if (temp != '0') {                        buffer.append(temp);                        i=i+2;                       } else                        buffer.append(fileChars[i]);                                    } else {                    buffer.append(fileChars[i]);                }             }                     return buffer.toString();        }    }         /**     * Encode file path: if it contains unsafe symbols,     * according to RFC 1738.     *       * @param filenamepath  path to filename     * @return  encoded file path     */    public static String encodeFilePath(String filenamepath) {        if (filenamepath == null) {            return null;        } else {            char[] fileChars = new char[filenamepath.length()];            StringBuffer buffer = new StringBuffer(filenamepath.length());            String temp;                    filenamepath.getChars(0,filenamepath.length(),fileChars,0);                    for (int i = 0; i < fileChars.length; i++)            {              temp = encodeUnsafeCharacter(fileChars[i]);                            if (temp == null)                   buffer.append(fileChars[i]);              else                  buffer.append(temp);            }                        return buffer.toString();       }    }        /**     * Encodes character to it US-ASCII code.     *      * @param character     * @return the code of unsafe character     * or null if character is reserved.     */    private static String encodeUnsafeCharacter(char character) {        for (int i = 0; i < unsafeCharacters.length; i++) {            if (character == unsafeCharacters[i])                return charactersASCIICode[i];        }                return null;    }        /**     * Decodes ASCII code string to it     * literal representation.     *      * @param asciiCode string with ASCII code     * @return specific character or '0', if      * we don`t need to decode this string     */    private static char decodeASCIISymbol(String asciiCode) {        for (int i = 0; i < charactersASCIICode.length; i++) {            if (asciiCode.equals(charactersASCIICode[i]))                return unsafeCharacters[i];        }                return '0';    }                     }

⌨️ 快捷键说明

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