編輯:關於Android編程
本來遞歸拷貝文件夾是很容易的, 但是Android的assets提供的接口沒有文件操作那麼方便, 昨天寫了一個方法來實現把assets資源拷貝到指定目錄,
/** * copy assets to releaseDir with full path * * @author brian * @param context * @param assetsDir * @param releaseDir */ public static void releaseAssets(Context context, String assetsDir, String releaseDir) { if (TextUtils.isEmpty(releaseDir)) { return; } else if (releaseDir.endsWith(/)) { releaseDir = releaseDir.substring(0, releaseDir.length() - 1); } if (TextUtils.isEmpty(assetsDir) || assetsDir.equals(/)) { assetsDir = ; } else if (assetsDir.endsWith(/)) { assetsDir = assetsDir.substring(0, assetsDir.length() - 1); } AssetManager assets = context.getAssets(); try { String[] fileNames = assets.list(assetsDir);//只能獲取到文件(夾)名,所以還得判斷是文件夾還是文件 if (fileNames.length > 0) {// is dir for (String name : fileNames) { if (!TextUtils.isEmpty(assetsDir)) { name = assetsDir + / + name;//補全assets資源路徑 } // Log.i(, brian name= + name); String[] childNames = assets.list(name);//判斷是文件還是文件夾 if (!TextUtils.isEmpty(name) && childNames.length > 0) { releaseAssets(context, name, releaseDir);//遞歸, 因為資源都是帶著全路徑, //所以不需要在遞歸是設置目標文件夾的路徑 } else { InputStream is = assets.open(name); FileUtil.writeFile(releaseDir + / + name, is); } } } else {// is file InputStream is = assets.open(assetsDir); // 寫入文件前, 需要提前級聯創建好路徑, 下面有代碼貼出 FileUtil.writeFile(releaseDir + / + assetsDir, is); } } catch (Exception e) { e.printStackTrace(); } }級聯創建folder
public static void checkFolderExists(String path) { File file = new File(path); if (file.exists() && !file.isDirectory() || !file.exists()) { file.mkdirs(); } }
現在越來越多的應用開始重視流暢度方面的測試,了解Android應用程序是如何在屏幕上顯示的則是基礎中的基礎,就讓我們一起看看小小屏幕中大大的學問。這也是我下篇文章&mda
前言:本文主要描述Android BLE的一些基礎知識及相關操作流程,不牽扯具體的業務實現,其中提供了針對廣播包及響應包的解析思路,希望對正在或即將面臨Android B
本文實例講述了Android編程實現自定義ProgressBar樣式。分享給大家供大家參考,具體如下:效果圖如下,本例中設置了第一級進度條和第二級進度條。樣式資源:pro
在上一篇博文《Android之——殺死用戶選中的進程(釋放進程占用的空間)》一文中,向大家介紹了如何殺死用戶選中的進程,但是,遺留了一個問題,那就