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对象,如果该文件夹不存在则用指定名称创建一个新的文件夹
// 获取当前程序路径
分割线
================================================
获取手机中外置内存卡、内置内存卡、手机内存路径。思路是:先用 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; }
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 {