版權聲明:本文為HaiyuKing原創文章,轉載請注明出處!
前言
封裝了擷取SD卡根目錄路徑、以及對檔案讀寫、擷取檔案名等相關操作。
因為需要用到android.permission.READ_EXTERNAL_STORAGE權限,是以依賴《Android6.0運作時權限(基于RxPermission開源庫)》。
效果圖
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yNhZWO1cDZwE2NldjY5gjZlZWN5YDNldDOhNWM2ADOj9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
代碼分析
較常用的應該是擷取SD卡根目錄路徑、擷取檔案名、建立目錄操作。
使用步驟
一、項目組織結構圖
注意事項:
1、 導入類檔案後需要change包名以及重新import R檔案路徑
2、 Values目錄下的檔案(strings.xml、dimens.xml、colors.xml等),如果項目中存在,則複制裡面的内容,不要整個覆寫
二、導入步驟
将fileutil包複制到項目中
建立一個包含以下代碼的MyApplication.java(自定義的Application子類)
packagecom.why.project.fileutilsdemo;importandroid.app.Application;importandroid.content.Context;
public class MyApplication extendsApplication {
private staticContext mAppContext;
@Overridepublic voidonCreate() {super.onCreate();
mAppContext=getApplicationContext();
}
public staticContext getAppContext()
{returnmAppContext;
}
}
在AndroidManifest.xml中聲明這個MyApplication并添權重限
添加運作時權限的處理(本demo中采用的是修改targetSDKVersion=22)
在build.gradle中導入第三方庫:org.apache.httpcomponents:httpcore:4.4.4
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.why.project.fileutilsdemo"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
//FileUtils
compile 'org.apache.httpcomponents:httpcore:4.4.4'
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
}
對于Eclipse開發環境,在libs目錄下導入httpcore-4.4.4.jar包即可。
三、使用方法
private voidinitEvents() {//擷取SD卡路徑
tv_getSdPath.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String sdPath=FileUtils.getSDPath();
Log.w(TAG,"sdPath="+sdPath);
}
});//建立目錄
tv_makeFolders.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String fileForderPath= FileUtils.getSDPath() + File.separator + "fileUtilDir" +File.separator;
Log.w(TAG,"fileForderPath="+fileForderPath);boolean makeFolderState =FileUtils.makeFolders(fileForderPath);
Log.w(TAG,"makeFolderState="+makeFolderState);
}
});//将字元串寫入檔案
tv_writeFile.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);
String content= "将字元串内容添加到文本檔案中";boolean writeFileState =FileUtils.writeFile(filePath,content);
Log.w(TAG,"writeFileState="+writeFileState);
}
});//讀取檔案
tv_readFile.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);
String readContent=FileUtils.readFile(filePath);
Log.w(TAG,"readContent="+readContent);
}
});//擷取檔案名(不帶字尾)
tv_getFileNameWithoutExtension.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);
String fileNameWithoutExtension=FileUtils.getFileNameWithoutExtension(filePath);
Log.w(TAG,"fileNameWithoutExtension="+fileNameWithoutExtension);
}
});//擷取檔案名(帶字尾)
tv_getFileName.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);
String fileName=FileUtils.getFileName(filePath);
Log.w(TAG,"fileName="+fileName);
}
});//擷取字尾名
tv_getFileExtension.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);
String fileExtension=FileUtils.getFileExtension(filePath);
Log.w(TAG,"fileExtension="+fileExtension);
}
});//擷取檔案大小
tv_getFileSize.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);long fileSize =FileUtils.getFileSize(filePath);
Log.w(TAG,"fileSize="+fileSize);
}
});//删除檔案
tv_deleteFileRecursion.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String filePath= FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt";
Log.w(TAG,"filePath="+filePath);FileUtils.deleteFileRecursion(filePath);}
});//擷取APP的檔案路徑
tv_getAppFilePath.setOnClickListener(newView.OnClickListener() {
@Overridepublic voidonClick(View v) {
String appFilePath=FileUtils.getAppFilePath();
Log.w(TAG,"appFilePath="+appFilePath);
}
});
}
混淆配置
#=====================httpcore=====================
#android Studio環境中不需要,eclipse環境中需要
#-libraryjars libs/httpcore-4.4.4.jar
-dontwarn org.apache.http.**
-keep class org.apache.http.**{*;}
參考資料
項目demo下載下傳位址