ファイル操作メソッドセットクラス

7794 ワード

このクラスは、ファイルを書く、ファイルを削除する、ファイルをコピーする、ファイルを検索する、ファイルが存在するかどうかを判断するなど、よく使われる機能をカプセル化しています.
後で使用するのに便利です.
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;
    }
}

より多くのモバイルインターネットの発展傾向、app開発、モバイルインターネット応用に関する資料はインターネットの1点に行ってください:www.yidin.Netメッセージ
android QQ群:222392467
資料:
http://www.yidin.net/?p=8280
http://www.yidin.net/?p=9725