FileUtils【获取SD卡根目录、读写文件、移动、复制、删除文件、获取文件名、后缀名操作类】
2017-07-08 18:22
686 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
因为需要用到android.permission.READ_EXTERNAL_STORAGE权限,所以依赖《Android6.0运行时权限(基于RxPermission开源库)》。
注意事项:
1、 导入类文件后需要change包名以及重新import R文件路径
2、 Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
对于Eclipse开发环境,在libs目录下导入httpcore-4.4.4.jar包即可。
链接:http://pan.baidu.com/s/1pKUzNiN 密码:xa8c
前言
封装了获取SD卡根目录路径、以及对文件读写、获取文件名等相关操作。因为需要用到android.permission.READ_EXTERNAL_STORAGE权限,所以依赖《Android6.0运行时权限(基于RxPermission开源库)》。
效果图
代码分析
较常用的应该是获取SD卡根目录路径、获取文件名、创建目录操作。使用步骤
一、项目组织结构图
注意事项:
1、 导入类文件后需要change包名以及重新import R文件路径
2、 Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
二、导入步骤
将fileutil包复制到项目中
创建一个包含以下代码的MyApplication.java(自定义的Application子类)
package com.why.project.fileutilsdemo; import android.app.Application; import android.content.Context; /** * Created by HaiyuKing * Used 自定义Application【系统上下文】 */ public class MyApplication extends Application { /**系统上下文*/ private static Context mAppContext; @Override public void onCreate() { super.onCreate(); mAppContext = getApplicationContext(); } /**获取系统上下文:用于FileUtils工具类、Utility类*/ public static Context getAppContext() { return mAppContext; } }
在AndroidManifest.xml中声明这个MyApplication并添加权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.why.project.fileutilsdemo"> <!-- ======================(FileUtil)========================== --> <!-- 在SD卡中创建与删除文件权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 向SD卡写入数据权限 --> <uses-permission android:name="android.permission.REORDER_TASKS"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:name=".MyApplication"> <activity android:name=".activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
添加运行时权限的处理(本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包即可。
链接:http://pan.baidu.com/s/1pKUzNiN 密码:xa8c
三、使用方法
private void initEvents() { //获取SD卡路径 tv_getSdPath.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String sdPath = FileUtils.getSDPath(); Log.w(TAG,"sdPath="+sdPath); } }); //创建目录 tv_makeFolders.setOnClickListener(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(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(new View.OnClickListener() { @Override public void onClick(View v) { String filePath = FileUtils.getSDPath() + File.separator + "fileUtilDir" + File.separator + "file.txt"; Log.w(TAG,"filePath="+filePath); boolean delFileState = FileUtils.deleteFileRecursion(filePath); Log.w(TAG,"delFileState="+delFileState); } }); //获取APP的文件路径 tv_getAppFilePath.setOnClickListener(new View.OnClickListener() { @Override public void onClick(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下载地址
https://github.com/haiyuKing/FileUtilsDemo相关文章推荐
- VC++获取文件名,移动、删除、重命名、复制文件
- java文件操作类(新建 复制 移动 删除文件和文件夹 获取扩展名)
- c#文件读写、创建、复制、移动、删除
- Java 新建、复制、删除、移动文件(夹)操作类
- Java Io文件操作(读写、追加、删除、移动、复制、修改)
- Java 新建、复制、删除、移动文件(夹)操作类
- Java 新建、复制、删除、移动文件(夹)操作类
- 复制、删除、移动文件、获取文件的版本信息、更改文件属性,删除只读文件
- Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
- C#进行文件读写、创建、复制、移动、删除的方法
- php -- 文件操作类(文件或文件夹的:创建、删除、复制、移动)
- Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
- 文件操作类FileHelper(创建、删除、复制、移动)
- Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
- Linux 入门常用命令 — 文件的复制、删除和移动
- asp.net中对文件的创建,移动,复制,及删除操作
- 自己写的处理文件的类,删除目录,复制目录,遍历目录,获取文件属性,点评一下啊
- Linux文件的复制、删除和移动命令
- Linux文件的复制、删除和移动命令
- [API学习]删除、复制、重命名、移动文件