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>
更多的移动互联网的发展趋势、app开发、移动互联网应用相关的资料请到互联网的一点事:www.yidin.net 留言
android QQ群:222392467
资料:
http://www.yidin.net/?p=8280
http://www.yidin.net/?p=9725