android 文件操作方法集合类分享

这个类整合了写文件,删除文件,复制文件,搜索文件,判断文件是否存在等,是对一些常用的功能进行封装了。
用于记录和方便以后使用。
public class FileAdapter {
        private static final String TAG = "FileAdaptor";
 
        /**
         * 获取指定位置的指定类型的文件
         * 
         * @param path
         *            文件夹路径
         * @param type
         *            文件类型(如“*.jpg;*.png;*.gif”)
         * @return
         */
        public static void getFileList(String path, String type,
                        final OnFileListCallback onFileListCallback) {
 
                new AsyncTask<String, String, String>() {
                        ArrayList<FileInfo> list = new ArrayList<FileInfo>();
                        @Override
                        protected void onPostExecute(String result) {
                                onFileListCallback.SearchFileListInfo(list);
                        }
 
                        @Override
                        protected String doInBackground(String... params) {
                                // TODO Auto-generated method stub
                                 
                                String path = params[1].substring(params[1]
                                                .lastIndexOf(".") + 1);
                                File file = new File(params[0]);
                                scanSDCard(file,path,list);
                                return null;
                        }
 
                }.execute(path, type, "");
        }
 
        /**
         * 扫描完成后的回调,获取文件列表必须实现
         * 
         * @author cola
         * 
         */
        public interface OnFileListCallback {
                /**
                 * 返回查询的文件列表
                 * @param list 文件列表
                 */
                public void SearchFileListInfo(List<FileInfo> list);
        }
 
        private static void scanSDCard(File file, String ext, ArrayList<FileInfo> list) {
                if (file.isDirectory()) {
                        File[] files = file.listFiles();
                        if (files != null) {
                                for (int i = 0; i < files.length; i++) {
                                        File tmp = files<i>;
                                        if (tmp.isFile()) {
                                                String fileName = tmp.getName();
                                                String filePath = tmp.getName();
                                                if (fileName.indexOf(".") >= 0) {
                                                        fileName = fileName.substring(fileName
                                                                        .lastIndexOf(".") + 1);
                                                        if (ext != null && ext.equalsIgnoreCase(fileName)) {
                                                                AspLog.i(TAG, filePath);
                                                                FileInfo info = new FileInfo();
                                                                info.fileName = filePath;
                                                                info.filePath = tmp.getAbsolutePath();
                                                                list.add(info);
                                                        }
                                                }
                                        } else
                                                scanSDCard(tmp, ext, list);
                                }
                        }
                } else {
                        if (file.isFile()) {
                                String fileName = file.getName();
                                String filePath = file.getName();
                                if (fileName.indexOf(".") >= 0) {
                                        fileName = fileName
                                                        .substring(fileName.lastIndexOf(".") + 1);
                                        if (ext != null && ext.equalsIgnoreCase(fileName)) {
                                                AspLog.i(TAG, filePath);
                                                FileInfo info = new FileInfo();
                                                info.fileName = filePath;
                                                info.filePath = file.getAbsolutePath();
                                                list.add(info);
                                        }
                                }
                        }
                }
        }
 
    /**
     * 判断
     */
    public static boolean isSdCardExist() {
        return Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
    }
 
    /**
     * 目录相关
     */
    public static String getSdCardRootDir() {
        return Environment.getExternalStorageDirectory().getPath() + "/";
    }
 
    public static String getCacheDir(Context ctx) {
        // /data/data/<package name>/cache
        return ctx.getCacheDir().getPath() + "/";
    }
 
    public static String getFilesDir(Context ctx) {
        // /data/data/<package name>/files
        return ctx.getFilesDir().getPath() + "/";
    }
 
    public static String getSharedPrefDir(Context ctx) {
        String path = "/data/data/com.timedee.calendar/shared_prefs/";
        mkDir(path);
        return path;
    }
 
    public static String getSdDataDir() {
        return getSdCardRootDir() + "timedee/.data/";
    }
 
    public static String getBackupDir() {
        return getSdCardRootDir() + "timedee/.backup/";
    }
 
    public static boolean mkDir(String path) {
        File dir = new File(path);
        boolean res = dir.mkdirs();
 
        return res;
    }
 
    /**
     * 文件操作相关
     */
    public static boolean writeFile(String path, InputStream is) {
        boolean result = false;
        FileOutputStream os = null;
        BufferedOutputStream bos = null;
        try {
            File file = new File(path);
            os = new FileOutputStream(file, false);
            bos = new BufferedOutputStream(os);
            int readLen = 0;
            byte[] buf = new byte[1024];
            while ((readLen = is.read(buf)) != -1) {
                bos.write(buf, 0, readLen);
            }
            bos.flush();
            bos.close();
            os.close();
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                bos.close();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
 
        return result;
    }
 
    public static boolean writeTextFile(String path, String data) {
        boolean result = false;
        FileWriter fw = null;
        try {
            File file = new File(path);
            fw = new FileWriter(file);
            fw.write(data);
            fw.close();
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                fw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
 
        return result;
    }
 
    public static InputStream readFile(String path) {
        File file = new File(path);
        FileInputStream fis = null;
 
        try {
            fis = new FileInputStream(file);
        } catch (Exception e) {
 
        }
 
        return fis;
    }
 
    public static boolean CopyFile(String fromFile, String toFile) {
        try {
            InputStream fosfrom = new FileInputStream(fromFile);
            OutputStream fosto = new FileOutputStream(toFile);
            byte bt[] = new byte[4096];
            int c;
            while ((c = fosfrom.read(bt)) > 0) {
                fosto.write(bt, 0, c);
            }
            fosfrom.close();
            fosto.close();
            bt = null;
            return true;
 
        } catch (Exception ex) {
            return false;
        }
    }
 
    public static boolean CopyAssetFile(Context ctx, String fromFile, String toFile) {
        try {
            InputStream fosfrom = ctx.getAssets().open(fromFile);
            OutputStream fosto = new FileOutputStream(toFile);
            byte bt[] = new byte[4096];
            int c;
            while ((c = fosfrom.read(bt)) > 0) {
                fosto.write(bt, 0, c);
            }
            fosfrom.close();
            fosto.close();
            bt = null;
            return true;
 
        } catch (Exception ex) {
            return false;
        }
    }
 
    public static boolean deleteFile(String path) {
        try {
            File file = new File(path);
            return file.delete();
        } catch (Exception ex) {
            return false;
        }
    }
 
    public static boolean isFileExist(String path) {
        try {
            File file = new File(path);
            return file.exists();
        } catch (Exception ex) {
        }
 
        return false;
    }
}</i>
android QQ群:222392467
资料:
http://www.yidin.net/?p=8280
http://www.yidin.net/?p=9725

posted on 2013-05-16 18:05  梁DH  阅读(1138)  评论(2编辑  收藏  举报

导航