http://www.open-open.com/code/view/1433585940578

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。

一、 files
1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。
3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
4. Context.deleteFile(String),删除files下指定名称的文件。

二、cache
1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。

三、custom dir

getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹

//  获取当前程序路径

getApplicationContext().getFilesDir().getAbsolutePath();
//  获取该程序的安装包路径
String path=getApplicationContext().getPackageResourcePath();
//  获取程序默认数据库路径
getApplicationContext().getDatabasePath(s).getAbsolutePath();

//===============================================

分割线

================================================

获取手机中外置内存卡、内置内存卡、手机内存路径。思路是:先用 Environment.getExternalStorageDirectory()获得外部存储卡路径(某些机型也表现为内部存储卡路径),如没有获 取到有效sd卡插入,则使用安卓的配置文件system/etc/vold.fstab读取全部挂载信息,假如也没有可写入的sd卡,则使用 getFilesDir()方式获得当前应用所在存储路径。为适应不同手机的内存情况,先分三种情况获得可存储路径phonePicsPath,后面代码较长是因为有两个工具类,复制即可,代码如下:

//首先判断是否有外部存储卡,如没有判断是否有内部存储卡,如没有,继续读取应用程序所在存储  if(getExternalSdCardPath() != null){   phonePicsPath = getExternalSdCardPath();  }else{   phonePicsPath = getFilesDir().getAbsolutePath();  }
/**     * 遍历 "system/etc/vold.fstab” 文件,获取全部的Android的挂载点信息     *      * @return     */    private static ArrayList<String> getDevMountList() {        String[] toSearch = FileUtils.readFile("/system/etc/vold.fstab").split(" ");        ArrayList<String> out = new ArrayList<String>();        for (int i = 0; i < toSearch.length; i++) {            if (toSearch[i].contains("dev_mount")) {                if (new File(toSearch[i + 2]).exists()) {                    out.add(toSearch[i + 2]);                }            }        }        return out;    }/**     * 获取扩展SD卡存储目录     *      * 如果有外接的SD卡,并且已挂载,则返回这个外置SD卡目录     * 否则:返回内置SD卡目录     *      * @return     */    public static String getExternalSdCardPath() {         if (SDCardUtils.isMounted()) {            File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());            return sdCardFile.getAbsolutePath();        }         String path = null;         File sdCardFile = null;         ArrayList<String> devMountList = getDevMountList();         for (String devMount : devMountList) {            File file = new File(devMount);             if (file.isDirectory() && file.canWrite()) {                path = file.getAbsolutePath();                 String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());                File testWritable = new File(path, "test_" + timeStamp);                 if (testWritable.mkdirs()) {                    testWritable.delete();                } else {                    path = null;                }            }        }         if (path != null) {            sdCardFile = new File(path);            return sdCardFile.getAbsolutePath();        }         return null;    }

FileUtils文件:

package com.zqsy.order.tools;/*** * 文件工具类 * @author zhangda * */import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import android.text.TextUtils;/** * File Utils * <ul> * Read or write file * <li>{@link #readFile(String)} read file</li> * <li>{@link #readFileToList(String)} read file to string list</li> * <li>{@link #writeFile(String, String, boolean)} write file from String</li> * <li>{@link #writeFile(String, String)} write file from String</li> * <li>{@link #writeFile(String, List, boolean)} write file from String List</li> * <li>{@link #writeFile(String, List)} write file from String List</li> * <li>{@link #writeFile(String, InputStream)} write file</li> * <li>{@link #writeFile(String, InputStream, boolean)} write file</li> * <li>{@link #writeFile(File, InputStream)} write file</li> * <li>{@link #writeFile(File, InputStream, boolean)} write file</li> * </ul> * <ul> * Operate file * <li>{@link #moveFile(File, File)} or {@link #moveFile(String, String)}</li> * <li>{@link #copyFile(String, String)}</li> * <li>{@link #getFileExtension(String)}</li> * <li>{@link #getFileName(String)}</li> * <li>{@link #getFileNameWithoutExtension(String)}</li> * <li>{@link #getFileSize(String)}</li> * <li>{@link #deleteFile(String)}</li> * <li>{@link #isFileExist(String)}</li> * <li>{@link #isFolderExist(String)}</li> * <li>{@link #makeFolders(String)}</li> * <li>{@link #makeDirs(String)}</li> * </ul> *  * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2012-5-12 */public class FileUtils {    public final static String FILE_EXTENSION_SEPARATOR = ".";    private FileUtils() {        throw new AssertionError();    }    /**     * read file     *      * @param filePath     * @param charsetName The name of a supported {@link java.nio.charset.Charset </code>charset<code>}     * @return if file not exist, return null, else return content of file     * @throws RuntimeException if an error occurs while operator BufferedReader     */    public static String readFile(String filePath) {     String fileContent = "";        File file = new File(filePath);        if (file == null || !file.isFile()) {            return null;        }        BufferedReader reader = null;        try {            InputStreamReader is = new InputStreamReader(new FileInputStream(file));            reader = new BufferedReader(is);            String line = null;            int i = 0;            while ((line = reader.readLine()) != null) {                fileContent += line + " ";            }            reader.close();            return fileContent;        } catch (IOException e) {         e.printStackTrace();        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e) {                 e.printStackTrace();                }            }        }        return fileContent;    }    /**     * write file     *      * @param filePath     * @param content     * @param append is append, if true, write to the end of file, else clear content of file and write into it     * @return return false if content is empty, true otherwise     * @throws RuntimeException if an error occurs while operator FileWriter     */    public static boolean writeFile(String filePath, String content, boolean append) {        if (StringUtils.isEmpty(content)) {            return false;        }        FileWriter fileWriter = null;        try {            makeDirs(filePath);            fileWriter = new FileWriter(filePath, append);            fileWriter.write(content);            fileWriter.close();            return true;        } catch (IOException e) {            throw new RuntimeException("IOException occurred. ", e);        } finally {            if (fileWriter != null) {                try {                    fileWriter.close();                } catch (IOException e) {                    throw new RuntimeException("IOException occurred. ", e);                }            }        }    }    /**     * write file     *      * @param filePath     * @param contentList     * @param append is append, if true, write to the end of file, else clear content of file and write into it     * @return return false if contentList is empty, true otherwise     * @throws RuntimeException if an error occurs while operator FileWriter     */    public static boolean writeFile(String filePath, List<String> contentList, boolean append) {        if (contentList == null || contentList.size() == 0) {            return false;        }        FileWriter fileWriter = null;        try {            makeDirs(filePath);            fileWriter = new FileWriter(filePath, append);            int i = 0;            for (String line : contentList) {                if (i++ > 0) {                    fileWriter.write("\r\n");                }                fileWriter.write(line);            }            fileWriter.close();            return true;        } catch (IOException e) {            throw new RuntimeException("IOException occurred. ", e);        } finally {            if (fileWriter != null) {                try {                    fileWriter.close();                } catch (IOException e) {                    throw new RuntimeException("IOException occurred. ", e);                }            }        }    }    /**     * write file, the string will be written to the begin of the file     *      * @param filePath     * @param content     * @return     */    public static boolean writeFile(String filePath, String content) {        return writeFile(filePath, content, false);    }    /**     * write file, the string list will be written to the begin of the file     *      * @param filePath     * @param contentList     * @return     */    public static boolean writeFile(String filePath, List<String> contentList) {        return writeFile(filePath, contentList, false);    }    /**     * write file, the bytes will be written to the begin of the file     *      * @param filePath     * @param stream     * @return     * @see {@link #writeFile(String, InputStream, boolean)}     */    public static boolean writeFile(String filePath, InputStream stream) {        return writeFile(filePath, stream, false);    }    /**     * write file     *      * @param file the file to be opened for writing.     * @param stream the input stream     * @param append if <code>true</code>, then bytes will be written to the end of the file rather than the beginning     * @return return true     * @throws RuntimeException if an error occurs while operator FileOutputStream     */    public static boolean writeFile(String filePath, InputStream stream, boolean append) {        return writeFile(filePath != null ? new File(filePath) : null, stream, append);    }    /**     * write file, the bytes will be written to the begin of the file     *      * @param file     * @param stream     * @return     * @see {@link #writeFile(File, InputStream, boolean)}     */    public static boolean writeFile(File file, InputStream stream) {        return writeFile(file, stream, false);    }    /**     * write file     *      * @param file the file to be opened for writing.     * @param stream the input stream     * @param append if <code>true</code>, then bytes will be written to the end of the file rather than the beginning     * @return return true     * @throws RuntimeException if an error occurs while operator FileOutputStream     */    public static boolean writeFile(File file, InputStream stream, boolean append) {        OutputStream o = null;        try {            makeDirs(file.getAbsolutePath());            o = new FileOutputStream(file, append);            byte data[] = new byte[1024];            int length = -1;            while ((length = stream.read(data)) != -1) {                o.write(data, 0, length);            }            o.flush();            return true;        } catch (FileNotFoundException e) {            throw new RuntimeException("FileNotFoundException occurred. ", e);        } catch (IOException e) {            throw new RuntimeException("IOException occurred. ", e);        } finally {            if (o != null) {                try {                    o.close();                    stream.close();                } catch (IOException e) {                    throw new RuntimeException("IOException occurred. ", e);                }            }        }    }    /**     * move file     *      * @param sourceFilePath     * @param destFilePath     */    public static void moveFile(String sourceFilePath, String destFilePath) {        if (TextUtils.isEmpty(sourceFilePath) || TextUtils.isEmpty(destFilePath)) {            throw new RuntimeException("Both sourceFilePath and destFilePath cannot be null.");        }        moveFile(new File(sourceFilePath), new File(destFilePath));    }    /**     * move file     *      * @param srcFile     * @param destFile     */    public static void moveFile(File srcFile, File destFile) {        boolean rename = srcFile.renameTo(destFile);        if (!rename) {            copyFile(srcFile.getAbsolutePath(), destFile.getAbsolutePath());            deleteFile(srcFile.getAbsolutePath());        }    }    /**     * copy file     *      * @param sourceFilePath     * @param destFilePath     * @return     * @throws RuntimeException if an error occurs while operator FileOutputStream     */    public static boolean copyFile(String sourceFilePath, String destFilePath) {        InputStream inputStream = null;        try {            inputStream = new FileInputStream(sourceFilePath);        } catch (FileNotFoundException e) {            throw new RuntimeException("FileNotFoundException occurred. ", e);        }        return writeFile(destFilePath, inputStream);    }    /**     * read file to string list, a element of list is a line     *      * @param filePath     * @param charsetName The name of a supported {@link java.nio.charset.Charset </code>charset<code>}     * @return if file not exist, return null, else return content of file     * @throws RuntimeException if an error occurs while operator BufferedReader     */    public static List<String> readFileToList(String filePath, String charsetName) {        File file = new File(filePath);        List<String> fileContent = new ArrayList<String>();        if (file == null || !file.isFile()) {            return null;        }        BufferedReader reader = null;        try {            InputStreamReader is = new InputStreamReader(new FileInputStream(file), charsetName);            reader = new BufferedReader(is);            String line = null;            while ((line = reader.readLine()) != null) {                fileContent.add(line);            }            reader.close();            return fileContent;        } catch (IOException e) {            throw new RuntimeException("IOException occurred. ", e);        } finally {            if (reader != null) {                try {                    reader.close();                } catch (IOException e) {                    throw new RuntimeException("IOException occurred. ", e);                }            }        }    }    /**     * get file name from path, not include suffix     *      * <pre>     *      getFileNameWithoutExtension(null)               =   null     *      getFileNameWithoutExtension("")                 =   ""     *      getFileNameWithoutExtension("   ")              =   "   "     *      getFileNameWithoutExtension("abc")              =   "abc"     *      getFileNameWithoutExtension("a.mp3")            =   "a"     *      getFileNameWithoutExtension("a.b.rmvb")         =   "a.b"     *      getFileNameWithoutExtension("c:\\")              =   ""     *      getFileNameWithoutExtension("c:\\a")             =   "a"     *      getFileNameWithoutExtension("c:\\a.b")           =   "a"     *      getFileNameWithoutExtension("c:a.txt\\a")        =   "a"     *      getFileNameWithoutExtension("/home/admin")      =   "admin"     *      getFileNameWithoutExtension("/home/admin/a.txt/b.mp3")  =   "b"     * </pre>     *      * @param filePath     * @return file name from path, not include suffix     * @see     */    public static String getFileNameWithoutExtension(String filePath) {        if (StringUtils.isEmpty(filePath)) {            return filePath;        }        int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);        int filePosi = filePath.lastIndexOf(File.separator);        if (filePosi == -1) {            return (extenPosi == -1 ? filePath : filePath.substring(0, extenPosi));        }        if (extenPosi == -1) {            return filePath.substring(filePosi + 1);        }        return (filePosi < extenPosi ? filePath.substring(filePosi + 1, extenPosi) : filePath.substring(filePosi + 1));    }    /**     * get file name from path, include suffix     *      * <pre>     *      getFileName(null)               =   null     *      getFileName("")                 =   ""     *      getFileName("   ")              =   "   "     *      getFileName("a.mp3")            =   "a.mp3"     *      getFileName("a.b.rmvb")         =   "a.b.rmvb"     *      getFileName("abc")              =   "abc"     *      getFileName("c:\\")              =   ""     *      getFileName("c:\\a")             =   "a"     *      getFileName("c:\\a.b")           =   "a.b"     *      getFileName("c:a.txt\\a")        =   "a"     *      getFileName("/home/admin")      =   "admin"     *      getFileName("/home/admin/a.txt/b.mp3")  =   "b.mp3"     * </pre>     *      * @param filePath     * @return file name from path, include suffix     */    public static String getFileName(String filePath) {        if (StringUtils.isEmpty(filePath)) {            return filePath;        }        int filePosi = filePath.lastIndexOf(File.separator);        return (filePosi == -1) ? filePath : filePath.substring(filePosi + 1);    }    /**     * get folder name from path     *      * <pre>     *      getFolderName(null)               =   null     *      getFolderName("")                 =   ""     *      getFolderName("   ")              =   ""     *      getFolderName("a.mp3")            =   ""     *      getFolderName("a.b.rmvb")         =   ""     *      getFolderName("abc")              =   ""     *      getFolderName("c:\\")              =   "c:"     *      getFolderName("c:\\a")             =   "c:"     *      getFolderName("c:\\a.b")           =   "c:"     *      getFolderName("c:a.txt\\a")        =   "c:a.txt"     *      getFolderName("c:a\\b\\c\\d.txt")    =   "c:a\\b\\c"     *      getFolderName("/home/admin")      =   "/home"     *      getFolderName("/home/admin/a.txt/b.mp3")  =   "/home/admin/a.txt"     * </pre>     *      * @param filePath     * @return     */    public static String getFolderName(String filePath) {        if (StringUtils.isEmpty(filePath)) {            return filePath;        }        int filePosi = filePath.lastIndexOf(File.separator);        return (filePosi == -1) ? "" : filePath.substring(0, filePosi);    }    /**     * get suffix of file from path     *      * <pre>     *      getFileExtension(null)               =   ""     *      getFileExtension("")                 =   ""     *      getFileExtension("   ")              =   "   "     *      getFileExtension("a.mp3")            =   "mp3"     *      getFileExtension("a.b.rmvb")         =   "rmvb"     *      getFileExtension("abc")              =   ""     *      getFileExtension("c:\\")              =   ""     *      getFileExtension("c:\\a")             =   ""     *      getFileExtension("c:\\a.b")           =   "b"     *      getFileExtension("c:a.txt\\a")        =   ""     *      getFileExtension("/home/admin")      =   ""     *      getFileExtension("/home/admin/a.txt/b")  =   ""     *      getFileExtension("/home/admin/a.txt/b.mp3")  =   "mp3"     * </pre>     *      * @param filePath     * @return     */    public static String getFileExtension(String filePath) {        if (StringUtils.isBlank(filePath)) {            return filePath;        }        int extenPosi = filePath.lastIndexOf(FILE_EXTENSION_SEPARATOR);        int filePosi = filePath.lastIndexOf(File.separator);        if (extenPosi == -1) {            return "";        }        return (filePosi >= extenPosi) ? "" : filePath.substring(extenPosi + 1);    }    /**     * Creates the directory named by the trailing filename of this file, including the complete directory path required     * to create this directory. <br/>     * <br/>     * <ul>     * <strong>Attentions:</strong>     * <li>makeDirs("C:\\Users\\Trinea") can only create users folder</li>     * <li>makeFolder("C:\\Users\\Trinea\\") can create Trinea folder</li>     * </ul>     *      * @param filePath     * @return true if the necessary directories have been created or the target directory already exists, false one of     *         the directories can not be created.     *         <ul>     *         <li>if {@link FileUtils#getFolderName(String)} return null, return false</li>     *         <li>if target directory already exists, return true</li>     *         <li>return {@link java.io.File#makeFolder}</li>     *         </ul>     */    public static boolean makeDirs(String filePath) {        String folderName = getFolderName(filePath);        if (StringUtils.isEmpty(folderName)) {            return false;        }        File folder = new File(folderName);        return (folder.exists() && folder.isDirectory()) ? true : folder.mkdirs();    }    /**     * @param filePath     * @return     * @see #makeDirs(String)     */    public static boolean makeFolders(String filePath) {        return makeDirs(filePath);    }    /**     * Indicates if this file represents a file on the underlying file system.     *      * @param filePath     * @return     */    public static boolean isFileExist(String filePath) {        if (StringUtils.isBlank(filePath)) {            return false;        }        File file = new File(filePath);        return (file.exists() && file.isFile());    }    /**     * Indicates if this file represents a directory on the underlying file system.     *      * @param directoryPath     * @return     */    public static boolean isFolderExist(String directoryPath) {        if (StringUtils.isBlank(directoryPath)) {            return false;        }        File dire = new File(directoryPath);        return (dire.exists() && dire.isDirectory());    }    /**     * delete file or directory     * <ul>     * <li>if path is null or empty, return true</li>     * <li>if path not exist, return true</li>     * <li>if path exist, delete recursion. return true</li>     * <ul>     *      * @param path     * @return     */    public static boolean deleteFile(String path) {        if (StringUtils.isBlank(path)) {            return true;        }        File file = new File(path);        if (!file.exists()) {            return true;        }        if (file.isFile()) {            return file.delete();        }        if (!file.isDirectory()) {            return false;        }        for (File f : file.listFiles()) {            if (f.isFile()) {                f.delete();            } else if (f.isDirectory()) {                deleteFile(f.getAbsolutePath());            }        }        return file.delete();    }    /**     * get file size     * <ul>     * <li>if path is null or empty, return -1</li>     * <li>if path exist and it is a file, return file size, else return -1</li>     * <ul>     *      * @param path     * @return returns the length of this file in bytes. returns -1 if the file does not exist.     */    public static long getFileSize(String path) {        if (StringUtils.isBlank(path)) {            return -1;        }        File file = new File(path);        return (file.exists() && file.isFile() ? file.length() : -1);    }}

StringUtils文件

package com.zqsy.order.tools;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * String Utils *  * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2011-7-22 */public class StringUtils {    private StringUtils() {        throw new AssertionError();    }    /**     * is null or its length is 0 or it is made by space     *      * <pre>     * isBlank(null) = true;     * isBlank(&quot;&quot;) = true;     * isBlank(&quot;  &quot;) = true;     * isBlank(&quot;a&quot;) = false;     * isBlank(&quot;a &quot;) = false;     * isBlank(&quot; a&quot;) = false;     * isBlank(&quot;a b&quot;) = false;     * </pre>     *      * @param str     * @return if string is null or its size is 0 or it is made by space, return true, else return false.     */    public static boolean isBlank(String str) {        return (str == null || str.trim().length() == 0);    }    /**     * is null or its length is 0     *      * <pre>     * isEmpty(null) = true;     * isEmpty(&quot;&quot;) = true;     * isEmpty(&quot;  &quot;) = false;     * </pre>     *      * @param str     * @return if string is null or its size is 0, return true, else return false.     */    public static boolean isEmpty(CharSequence str) {        return (str == null || str.length() == 0);    }    /**     * compare two string     *      * @param actual     * @param expected     * @return     * @see ObjectUtils#isEquals(Object, Object)     */    public static boolean isEquals(String actual, String expected) {     return actual == expected || (actual == null ? expected == null : actual.equals(expected));    }    /**     * get length of CharSequence     *      * <pre>     * length(null) = 0;     * length(\"\") = 0;     * length(\"abc\") = 3;     * </pre>     *      * @param str     * @return if str is null or empty, return 0, else return {@link CharSequence#length()}.     */    public static int length(CharSequence str) {        return str == null ? 0 : str.length();    }    /**     * null Object to empty string     *      * <pre>     * nullStrToEmpty(null) = &quot;&quot;;     * nullStrToEmpty(&quot;&quot;) = &quot;&quot;;     * nullStrToEmpty(&quot;aa&quot;) = &quot;aa&quot;;     * </pre>     *      * @param str     * @return     */    public static String nullStrToEmpty(Object str) {        return (str == null ? "" : (str instanceof String ? (String)str : str.toString()));    }    /**     * capitalize first letter     *      * <pre>     * capitalizeFirstLetter(null)     =   null;     * capitalizeFirstLetter("")       =   "";     * capitalizeFirstLetter("2ab")    =   "2ab"     * capitalizeFirstLetter("a")      =   "A"     * capitalizeFirstLetter("ab")     =   "Ab"     * capitalizeFirstLetter("Abc")    =   "Abc"     * </pre>     *      * @param str     * @return     */    public static String capitalizeFirstLetter(String str) {        if (isEmpty(str)) {            return str;        }        char c = str.charAt(0);        return (!Character.isLetter(c) || Character.isUpperCase(c)) ? str : new StringBuilder(str.length())                .append(Character.toUpperCase(c)).append(str.substring(1)).toString();    }    /**     * encoded in utf-8     *      * <pre>     * utf8Encode(null)        =   null     * utf8Encode("")          =   "";     * utf8Encode("aa")        =   "aa";     * utf8Encode("啊啊啊啊")   = "%E5%95%8A%E5%95%8A%E5%95%8A%E5%95%8A";     * </pre>     *      * @param str     * @return     * @throws UnsupportedEncodingException if an error occurs     */    public static String utf8Encode(String str) {        if (!isEmpty(str) && str.getBytes().length != str.length()) {            try {                return URLEncoder.encode(str, "UTF-8");            } catch (UnsupportedEncodingException e) {                throw new RuntimeException("UnsupportedEncodingException occurred. ", e);            }        }        return str;    }    /**     * encoded in utf-8, if exception, return defultReturn     *      * @param str     * @param defultReturn     * @return     */    public static String utf8Encode(String str, String defultReturn) {        if (!isEmpty(str) && str.getBytes().length != str.length()) {            try {                return URLEncoder.encode(str, "UTF-8");            } catch (UnsupportedEncodingException e) {                return defultReturn;            }        }        return str;    }    /**     * get innerHtml from href     *      * <pre>     * getHrefInnerHtml(null)                                  = ""     * getHrefInnerHtml("")                                    = ""     * getHrefInnerHtml("mp3")                                 = "mp3";     * getHrefInnerHtml("&lt;a innerHtml&lt;/a&gt;")                    = "&lt;a innerHtml&lt;/a&gt;";     * getHrefInnerHtml("&lt;a&gt;innerHtml&lt;/a&gt;")                    = "innerHtml";     * getHrefInnerHtml("&lt;a&lt;a&gt;innerHtml&lt;/a&gt;")                    = "innerHtml";     * getHrefInnerHtml("&lt;a href="baidu.com"&gt;innerHtml&lt;/a&gt;")               = "innerHtml";     * getHrefInnerHtml("&lt;a href="baidu.com" title="baidu"&gt;innerHtml&lt;/a&gt;") = "innerHtml";     * getHrefInnerHtml("   &lt;a&gt;innerHtml&lt;/a&gt;  ")                           = "innerHtml";     * getHrefInnerHtml("&lt;a&gt;innerHtml&lt;/a&gt;&lt;/a&gt;")                      = "innerHtml";     * getHrefInnerHtml("jack&lt;a&gt;innerHtml&lt;/a&gt;&lt;/a&gt;")                  = "innerHtml";     * getHrefInnerHtml("&lt;a&gt;innerHtml1&lt;/a&gt;&lt;a&gt;innerHtml2&lt;/a&gt;")        = "innerHtml2";     * </pre>     *      * @param href     * @return <ul>     *         <li>if href is null, return ""</li>     *         <li>if not match regx, return source</li>     *         <li>return the last string that match regx</li>     *         </ul>     */    public static String getHrefInnerHtml(String href) {        if (isEmpty(href)) {            return "";        }        String hrefReg = ".*<[\\s]*a[\\s]*.*>(.+?)<[\\s]*/a[\\s]*>.*";        Pattern hrefPattern = Pattern.compile(hrefReg, Pattern.CASE_INSENSITIVE);        Matcher hrefMatcher = hrefPattern.matcher(href);        if (hrefMatcher.matches()) {            return hrefMatcher.group(1);        }        return href;    }/**     * process special char in html     *      * <pre>     * htmlEscapeCharsToString(null) = null;     * htmlEscapeCharsToString("") = "";     * htmlEscapeCharsToString("mp3") = "mp3";     * htmlEscapeCharsToString("mp3&lt;") = "mp3<";     * htmlEscapeCharsToString("mp3&gt;") = "mp3\>";     * htmlEscapeCharsToString("mp3&amp;mp4") = "mp3&mp4";     * htmlEscapeCharsToString("mp3&quot;mp4") = "mp3\"mp4";     * htmlEscapeCharsToString("mp3&lt;&gt;&amp;&quot;mp4") = "mp3\<\>&\"mp4";     * </pre>     *      * @param source     * @return     */    public static String htmlEscapeCharsToString(String source) {        return StringUtils.isEmpty(source) ? source : source.replaceAll("&lt;", "<").replaceAll("&gt;", ">")                .replaceAll("&amp;", "&").replaceAll("&quot;", "\"");    }    /**     * transform half width char to full width char     *      * <pre>     * fullWidthToHalfWidth(null) = null;     * fullWidthToHalfWidth("") = "";     * fullWidthToHalfWidth(new String(new char[] {12288})) = " ";     * fullWidthToHalfWidth("!"#$%&) = "!\"#$%&";     * </pre>     *      * @param s     * @return     */    public static String fullWidthToHalfWidth(String s) {        if (isEmpty(s)) {            return s;        }        char[] source = s.toCharArray();        for (int i = 0; i < source.length; i++) {            if (source[i] == 12288) {                source[i] = ' ';                // } else if (source[i] == 12290) {                // source[i] = '.';            } else if (source[i] >= 65281 && source[i] <= 65374) {                source[i] = (char)(source[i] - 65248);            } else {                source[i] = source[i];            }        }        return new String(source);    }    /**     * transform full width char to half width char     *      * <pre>     * halfWidthToFullWidth(null) = null;     * halfWidthToFullWidth("") = "";     * halfWidthToFullWidth(" ") = new String(new char[] {12288});     * halfWidthToFullWidth("!\"#$%&) = "!"#$%&";     * </pre>     *      * @param s     * @return     */    public static String halfWidthToFullWidth(String s) {        if (isEmpty(s)) {            return s;        }        char[] source = s.toCharArray();        for (int i = 0; i < source.length; i++) {            if (source[i] == ' ') {                source[i] = (char)12288;                // } else if (source[i] == '.') {                // source[i] = (char)12290;            } else if (source[i] >= 33 && source[i] <= 126) {                source[i] = (char)(source[i] + 65248);            } else {                source[i] = source[i];            }        }        return new String(source);    }}

Android获取手机中外置内存卡 内置内存卡 手机内存路径相关推荐

  1. Android获取手机中外置内存卡、内置内存卡、手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  2. 手机内存卡转化linux,安卓手机内置内存卡和外置内存卡(SD卡)互换方法

    此类置换仅适用于有内置内存卡和外置内存卡的机,一般情况下,内置内存卡是指:该手机内部自带的存储空间.而外置内容卡是指:非机身自带的空间,如:SD卡.还不懂的可以问度娘.机身内存多的请忽略,root手机 ...

  3. android外置sd大小,android 读取外置和内置存储卡路径和大小

    [实例简介] android 读取外置和内置存储卡路径和大小,亲测好使,项目中以运用 [实例截图] [核心代码] a81fbea6-cb7a-4c96-be21-d52578f6de0a └── SD ...

  4. unity android 宏定义,Unity各平台内置宏定义

    属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...

  5. 谷歌浏览器配置微信浏览器_在 Chrome (谷歌浏览器) 中模拟微信内置浏览器

    微信和 QQ 内置浏览器 UA iOSQQ 内置浏览器 UA: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) > AppleWe ...

  6. 手机数据恢复华为荣耀X1智能手机32G内置存储手机严重损坏恢复照片聊天记录文档...

    华为荣耀X1智能手机32G内置存储手机,Android OS 4.2 系统,接到手机的时候已经成以下这个样子了,屏幕严重粉碎,各种配件已经都七零八碎,万幸手机主板还在,对于安卓手机,目前我们只要能保证 ...

  7. 在 Chrome (谷歌浏览器) 中模拟微信内置浏览器

    微信和 QQ 内置浏览器 UA iOSQQ 内置浏览器 UA: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) > AppleWe ...

  8. turtle python tkinter_【案例】 什么?idle 中竟然有内置 turtle 样例?(paint)

    案例介绍 我打算开启一个新的方向-- turtle 库案例. 在我们下载安装完毕 Python3 后,在搜索(查找)框中输入 idle.exe,就能够打开系统内置的 Python 开发环境了.不知道有 ...

  9. Python中常用的内置方法

    Python中常用的内置方法: 比较大小.求和 如下所示: 代码块: #枚举:返回索引值和对应的value值for i,v in enumerate('westos'):print(i,v)#zips ...

最新文章

  1. #Java夜未眠# 读书笔记
  2. 多级反馈队列调度算法原理
  3. C#中ArrayList集合
  4. 基于MFC SDI的图像处理程序(带效果图)
  5. shell脚本编程规范与变量
  6. html图片自适应浏览器高度,css如何高度自适应浏览器高度?
  7. 双极结型三极管及放大电路基础
  8. matlab 中 Transform,变换数据存储 - MATLAB transform - MathWorks 中国
  9. Linux下安装nodejs
  10. java int tmp_2016年Java认证考试题
  11. 【概率论与数理统计】目录
  12. 北京购房攻略(4.17)
  13. 12款免费的桌面便签软件
  14. 关于Sentaurus的日常(一)(Basics)
  15. 寄昙说 剑子仙迹 天之佛
  16. 信号处理--傅里叶变换的性质及常用信号的傅里叶变换
  17. Suspending Methods【暂停方法队列说明】
  18. jquery 遍历父元素、子元素、兄弟元素
  19. 为人所设置的依赖安装程序
  20. 教资教招笔记整理(二)

热门文章

  1. 分布式一致性算法理论分析
  2. 虚拟服务器+解释,螃蟹每日推特:关于虚拟服务器的相关解释
  3. 源码时代教你免费下载被网站保护的图片,这招百试百灵!
  4. 车端服务器架构「升级」
  5. Error: Flash Download failed - “Cortex-M4
  6. 给孩子一个全面守护,360儿童手表SE迎来史无前例优惠
  7. 马云反思电商价格战原文
  8. 2019石磊考研政治【全程班视频】
  9. CSS3学习(十):字体
  10. ssm毕设项目基于用户激励的图书管理系统fx8il(java+VUE+Mybatis+Maven+Mysql+sprnig)