Android(Java)空でないフォルダを削除

1161 ワード

Javaは空でないフォルダを削除するAPIを提供していないようです.
フォルダ全体を削除するには、私たち自身が必要です.
実はフォルダのコピー、フォルダの削除、本質的に1つの“ファイルの木”が遍歴する問題です.
粗い人は再帰で実現する.個人的には再帰は絶対に商業コードには使えないと考えている.
次に、フォルダ削除操作のJavaコードを示します.
/***
	 *          
	 * @param f
	 * @return      true,     false
	 */
	static private boolean delFileUnRoot(File f) {
		boolean ret = true;
		
		if (null == f || false == f.exists()) {
			return ret;
		}
		
		Stack tmpFileStack = new Stack();
		tmpFileStack.push(f);
		
		try {
			while(false == tmpFileStack.isEmpty()) {
				File curFile = tmpFileStack.pop();
				if (null == curFile) {
					continue;
				}
				if (curFile.isFile()) {
					if (false == curFile.delete()) {
						ret = false;
					}
				} else {
					File[] tmpSubFileList = curFile.listFiles();
					if (null == tmpSubFileList || 0 == tmpSubFileList.length) {	//       
						if (false == curFile.delete()) {
							ret = false;
						}
					} else {
						tmpFileStack.push(curFile); // !!!
						for (File item : tmpSubFileList) {
							tmpFileStack.push(item);
						}
					}
				}
			}
		} catch (Exception e) {
			ret = false;
		}
		return ret;
	}