android文件管理器--文件操作
16lz
2021-01-23
效果图:
android中对文件进行复制,粘贴,删除等操作,需要在文件清单中添加权限:
- <uses-permissionandroid:name="android.permission.WRITE_OWNER_DATA"></uses-permission>
- <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
核心代码:
- packagecom.tarena.filemanger.fileutil;
- importjava.io.File;
- importjava.io.FileInputStream;
- importjava.io.FileOutputStream;
- importjava.io.IOException;
- importjava.io.OutputStream;
- importcom.tarena.filemanger.util.MIMEType;
- importandroid.content.Context;
- importandroid.content.Intent;
- importandroid.net.Uri;
- importandroid.os.Environment;
- publicclassFileHelper{
- privateContextcontext;
- privateStringSDPATH;
- privateStringFILESPATH;
- publicFileHelper(Contextcontext){
- this.context=context;
- SDPATH=Environment.getExternalStorageDirectory().getPath()+"//";
- }
- /**
- *打开文件
- *@paramfile
- */
- publicstaticvoidopenFile(Contextcontext,Filefile){
- //Uriuri=Uri.parse("file://"+file.getAbsolutePath());
- Intentintent=newIntent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- //设置intent的Action属性
- intent.setAction(Intent.ACTION_VIEW);
- //获取文件file的MIME类型
- Stringtype=MIMEType.getMiMeType(file);
- //设置intent的data和Type属性。
- intent.setDataAndType(/*uri*/Uri.fromFile(file),type);
- //跳转
- context.startActivity(intent);
- }
- /**
- *在SD卡上创建文件
- *
- *@throwsIOException
- */
- publicFilecreatSDFile(StringfileName)throwsIOException{
- Filefile=newFile(SDPATH+fileName);
- file.createNewFile();
- returnfile;
- }
- /**
- *删除SD卡上的文件
- *
- *@paramfileName
- */
- publicbooleandelSDFile(StringfileName){
- Filefile=newFile(SDPATH+fileName);
- if(file==null||!file.exists()||file.isDirectory())
- returnfalse;
- file.delete();
- returntrue;
- }
- /**
- *在SD卡上创建目录
- *
- *@paramdirName
- */
- publicFilecreatSDDir(StringdirName){
- Filedir=newFile(SDPATH+dirName);
- dir.mkdir();
- returndir;
- }
- /**
- *删除SD卡上的目录
- *
- *@paramdirName
- */
- publicbooleandelSDDir(StringdirName){
- Filedir=newFile(SDPATH+dirName);
- returndelDir(dir);
- }
- /**
- *修改SD卡上的文件或目录名
- *@paramfileName
- */
- publicbooleanrenameSDFile(StringoldfileName,StringnewFileName){
- FileoleFile=newFile(oldfileName);
- FilenewnewFile=newFile(newFileName);
- returnoleFile.renameTo(newFile);
- }
- /**
- *拷贝SD卡上的单个文件
- *@parampath
- *@throwsIOException
- */
- publicbooleancopySDFileTo(StringsrcFileName,StringdestFileName,Stringfilename)
- throwsIOException{
- FilesrcFile=newFile(srcFileName);
- FiledestFile=newFile(destFileName+"/"+filename);
- returncopyFileTo(srcFile,destFile);
- }
- /**
- *拷贝SD卡上指定目录的所有文件
- *
- *@paramsrcDirName
- *@paramdestDirName
- *@return
- *@throwsIOException
- */
- publicbooleancopySDFilesTo(StringsrcDirName,StringdestDirName,Stringfilename)
- throwsIOException{
- FilesrcDir=newFile(srcDirName);
- FiledestDir=newFile(destDirName+"/"+filename);
- returncopyFilesTo(srcDir,destDir);
- }
- /**
- *移动SD卡上的单个文件
- *
- *@paramsrcFileName
- *@paramdestFileName
- *@return
- *@throwsIOException
- */
- publicbooleanmoveSDFileTo(StringsrcFileName,StringdestFileName)
- throwsIOException{
- FilesrcFile=newFile(SDPATH+srcFileName);
- FiledestFile=newFile(SDPATH+destFileName);
- returnmoveFileTo(srcFile,destFile);
- }
- /**
- *移动SD卡上的指定目录的所有文件
- *@paramsrcDirName
- *@paramdestDirName
- *@return
- *@throwsIOException
- */
- publicbooleanmoveSDFilesTo(StringsrcDirName,StringdestDirName)
- throwsIOException{
- FilesrcDir=newFile(SDPATH+srcDirName);
- FiledestDir=newFile(SDPATH+destDirName);
- returnmoveFilesTo(srcDir,destDir);
- }
- /*
- *将文件写入sd卡。如:writeSDFile("test.txt");
- */
- //publicOutputwriteSDFile(StringfileName)throwsIOException{
- //Filefile=newFile(SDPATH+fileName);
- //FileOutputStreamfos=newFileOutputStream(file);
- //returnnewOutput(fos);
- //}
- /*
- *在原有文件上继续写文件。如:appendSDFile("test.txt");
- */
- //publicOutputappendSDFile(StringfileName)throwsIOException{
- //Filefile=newFile(SDPATH+fileName);
- //FileOutputStreamfos=newFileOutputStream(file,true);
- //returnnewOutput(fos);
- //}
- /*
- *从SD卡读取文件。如:readSDFile("test.txt");
- */
- //publicInputreadSDFile(StringfileName)throwsIOException{
- //Filefile=newFile(SDPATH+fileName);
- //FileInputStreamfis=newFileInputStream(file);
- //returnnewInput(fis);
- //}
- /**
- *建立私有文件
- *
- *@paramfileName
- *@return
- *@throwsIOException
- */
- publicFilecreatDataFile(StringfileName)throwsIOException{
- Filefile=newFile(FILESPATH+fileName);
- file.createNewFile();
- returnfile;
- }
- /**
- *建立私有目录
- *
- *@paramdirName
- *@return
- */
- publicFilecreatDataDir(StringdirName){
- Filedir=newFile(FILESPATH+dirName);
- dir.mkdir();
- returndir;
- }
- /**
- *删除私有文件
- *
- *@paramfileName
- *@return
- */
- publicbooleandelDataFile(StringfileName){
- Filefile=newFile(FILESPATH+fileName);
- returndelFile(file);
- }
- /**
- *删除私有目录
- *
- *@paramdirName
- *@return
- */
- publicbooleandelDataDir(StringdirName){
- Filefile=newFile(FILESPATH+dirName);
- returndelDir(file);
- }
- /**
- *更改私有文件名
- *
- *@paramoldName
- *@paramnewName
- *@return
- */
- publicbooleanrenameDataFile(StringoldName,StringnewName){
- FileoldFile=newFile(FILESPATH+oldName);
- FilenewnewFile=newFile(FILESPATH+newName);
- returnoldFile.renameTo(newFile);
- }
- /**
- *在私有目录下进行文件复制
- *
- *@paramsrcFileName
- *:包含路径及文件名
- *@paramdestFileName
- *@return
- *@throwsIOException
- */
- publicbooleancopyDataFileTo(StringsrcFileName,StringdestFileName)
- throwsIOException{
- FilesrcFile=newFile(FILESPATH+srcFileName);
- FiledestFile=newFile(FILESPATH+destFileName);
- returncopyFileTo(srcFile,destFile);
- }
- /**
- *复制私有目录里指定目录的所有文件
- *
- *@paramsrcDirName
- *@paramdestDirName
- *@return
- *@throwsIOException
- */
- publicbooleancopyDataFilesTo(StringsrcDirName,StringdestDirName)
- throwsIOException{
- FilesrcDir=newFile(FILESPATH+srcDirName);
- FiledestDir=newFile(FILESPATH+destDirName);
- returncopyFilesTo(srcDir,destDir);
- }
- /**
- *移动私有目录下的单个文件
- *
- *@paramsrcFileName
- *@paramdestFileName
- *@return
- *@throwsIOException
- */
- publicbooleanmoveDataFileTo(StringsrcFileName,StringdestFileName)
- throwsIOException{
- FilesrcFile=newFile(FILESPATH+srcFileName);
- FiledestFile=newFile(FILESPATH+destFileName);
- returnmoveFileTo(srcFile,destFile);
- }
- /**
- *移动私有目录下的指定目录下的所有文件
- *
- *@paramsrcDirName
- *@paramdestDirName
- *@return
- *@throwsIOException
- */
- publicbooleanmoveDataFilesTo(StringsrcDirName,StringdestDirName)
- throwsIOException{
- FilesrcDir=newFile(FILESPATH+srcDirName);
- FiledestDir=newFile(FILESPATH+destDirName);
- returnmoveFilesTo(srcDir,destDir);
- }
- /*
- *将文件写入应用私有的files目录。如:writeFile("test.txt");
- */
- publicOutputStreamwirteFile(StringfileName)throwsIOException{
- OutputStreamos=context.openFileOutput(fileName,
- Context.MODE_WORLD_WRITEABLE);
- returnos;
- }
- /*
- *在原有文件上继续写文件。如:appendFile("test.txt");
- */
- //publicOutputappendFile(StringfileName)throwsIOException{
- //OutputStreamos=context.openFileOutput(fileName,Context.MODE_APPEND);
- //returnnewOutput(os);
- //}
- /*
- *从应用的私有目录files读取文件。如:readFile("test.txt");
- */
- //publicInputreadFile(StringfileName)throwsIOException{
- //InputStreamis=context.openFileInput(fileName);
- //returnnewInput(is);
- //}
- /**********************************************************************************************************/
- /*********************************************************************************************************/
- /**
- *删除一个文件
- *
- *@paramfile
- *@return
- */
- publicbooleandelFile(Filefile){
- if(file.isDirectory())
- returnfalse;
- returnfile.delete();
- }
- /**
- *删除一个目录(可以是非空目录)
- *@paramdir
- */
- publicbooleandelDir(Filedir){
- if(dir==null||!dir.exists()||dir.isFile()){
- returnfalse;
- }
- for(Filefile:dir.listFiles()){
- if(file.isFile()){
- file.delete();
- }elseif(file.isDirectory()){
- delDir(file);//递归
- }
- }
- dir.delete();
- returntrue;
- }
- /**
- *拷贝一个文件,srcFile源文件,destFile目标文件
- *@parampath
- *@throwsIOException
- */
- publicbooleancopyFileTo(FilesrcFile,FiledestFile)throwsIOException{
- if(srcFile.isDirectory()||destFile.isDirectory())
- returnfalse;//判断是否是文件
- FileInputStreamfis=newFileInputStream(srcFile);
- FileOutputStreamfos=newFileOutputStream(destFile);
- intreadLen=0;
- byte[]buf=newbyte[1024];
- while((readLen=fis.read(buf))!=-1){
- fos.write(buf,0,readLen);
- }
- fos.flush();
- fos.close();
- fis.close();
- returntrue;
- }
- /**
- *拷贝目录下的所有文件到指定目录
- *
- *@paramsrcDir
- *@paramdestDir
- *@return
- *@throwsIOException
- */
- publicbooleancopyFilesTo(FilesrcDir,FiledestDir)throwsIOException{
- if(!destDir.exists()){
- destDir.mkdirs();
- }
- if(!srcDir.isDirectory()||!destDir.isDirectory())
- returnfalse;//判断是否是目录
- File[]srcFiles=srcDir.listFiles();
- for(inti=0;i<srcFiles.length;i++){
- if(srcFiles[i].isFile()){
- //获得目标文件
- FiledestFile=newFile(destDir.getPath()+"//"
- +srcFiles[i].getName());
- copyFileTo(srcFiles[i],destFile);
- }elseif(srcFiles[i].isDirectory()){
- FiletheDestDir=newFile(destDir.getPath()+"//"
- +srcFiles[i].getName());
- copyFilesTo(srcFiles[i],theDestDir);
- }
- }
- returntrue;
- }
- /**
- *移动一个文件
- *
- *@paramsrcFile
- *@paramdestFile
- *@return
- *@throwsIOException
- */
- publicbooleanmoveFileTo(FilesrcFile,FiledestFile)throwsIOException{
- booleaniscopy=copyFileTo(srcFile,destFile);
- if(!iscopy)
- returnfalse;
- delFile(srcFile);
- returntrue;
- }
- /**
- *移动目录下的所有文件到指定目录
- *@paramsrcDir
- *@paramdestDir
- *@return
- *@throwsIOException
- */
- publicbooleanmoveFilesTo(FilesrcDir,FiledestDir)throwsIOException{
- if(!srcDir.isDirectory()||!destDir.isDirectory()){
- returnfalse;
- }
- File[]srcDirsrcDirFiles=srcDir.listFiles();
- for(inti=0;i<srcDirFiles.length;i++){
- if(srcDirFiles[i].isFile()){
- FileoneDestFile=newFile(destDir.getPath()+"//"
- +srcDirFiles[i].getName());
- moveFileTo(srcDirFiles[i],oneDestFile);
- delFile(srcDirFiles[i]);
- }elseif(srcDirFiles[i].isDirectory()){
- FileoneDestFile=newFile(destDir.getPath()+"//"
- +srcDirFiles[i].getName());
- moveFilesTo(srcDirFiles[i],oneDestFile);
- delDir(srcDirFiles[i]);
- }
- }
- returntrue;
- }
- }
更多相关文章
- android中Bitmap图像处理 修改图片大小以及保存时的文件大小
- Android 读取配置文件的内容
- 文件上传
- android文件上传到服务器
- [置顶] 入门Android开发--总目录
- wzplayer for android V1.5.3 (新增YUV文件播放)
- Android解析自定义xml文件(方案一)