效果图:

android中对文件进行复制,粘贴,删除等操作,需要在文件清单中添加权限:

        
  1. <uses-permissionandroid:name="android.permission.WRITE_OWNER_DATA"></uses-permission>
  2. <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

核心代码:

        
  1. packagecom.tarena.filemanger.fileutil;
  2. importjava.io.File;
  3. importjava.io.FileInputStream;
  4. importjava.io.FileOutputStream;
  5. importjava.io.IOException;
  6. importjava.io.OutputStream;
  7. importcom.tarena.filemanger.util.MIMEType;
  8. importandroid.content.Context;
  9. importandroid.content.Intent;
  10. importandroid.net.Uri;
  11. importandroid.os.Environment;
  12. publicclassFileHelper{
  13. privateContextcontext;
  14. privateStringSDPATH;
  15. privateStringFILESPATH;
  16. publicFileHelper(Contextcontext){
  17. this.context=context;
  18. SDPATH=Environment.getExternalStorageDirectory().getPath()+"//";
  19. }
  20. /**
  21. *打开文件
  22. *@paramfile
  23. */
  24. publicstaticvoidopenFile(Contextcontext,Filefile){
  25. //Uriuri=Uri.parse("file://"+file.getAbsolutePath());
  26. Intentintent=newIntent();
  27. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  28. //设置intent的Action属性
  29. intent.setAction(Intent.ACTION_VIEW);
  30. //获取文件file的MIME类型
  31. Stringtype=MIMEType.getMiMeType(file);
  32. //设置intent的data和Type属性。
  33. intent.setDataAndType(/*uri*/Uri.fromFile(file),type);
  34. //跳转
  35. context.startActivity(intent);
  36. }
  37. /**
  38. *在SD卡上创建文件
  39. *
  40. *@throwsIOException
  41. */
  42. publicFilecreatSDFile(StringfileName)throwsIOException{
  43. Filefile=newFile(SDPATH+fileName);
  44. file.createNewFile();
  45. returnfile;
  46. }
  47. /**
  48. *删除SD卡上的文件
  49. *
  50. *@paramfileName
  51. */
  52. publicbooleandelSDFile(StringfileName){
  53. Filefile=newFile(SDPATH+fileName);
  54. if(file==null||!file.exists()||file.isDirectory())
  55. returnfalse;
  56. file.delete();
  57. returntrue;
  58. }
  59. /**
  60. *在SD卡上创建目录
  61. *
  62. *@paramdirName
  63. */
  64. publicFilecreatSDDir(StringdirName){
  65. Filedir=newFile(SDPATH+dirName);
  66. dir.mkdir();
  67. returndir;
  68. }
  69. /**
  70. *删除SD卡上的目录
  71. *
  72. *@paramdirName
  73. */
  74. publicbooleandelSDDir(StringdirName){
  75. Filedir=newFile(SDPATH+dirName);
  76. returndelDir(dir);
  77. }
  78. /**
  79. *修改SD卡上的文件或目录名
  80. *@paramfileName
  81. */
  82. publicbooleanrenameSDFile(StringoldfileName,StringnewFileName){
  83. FileoleFile=newFile(oldfileName);
  84. FilenewnewFile=newFile(newFileName);
  85. returnoleFile.renameTo(newFile);
  86. }
  87. /**
  88. *拷贝SD卡上的单个文件
  89. *@parampath
  90. *@throwsIOException
  91. */
  92. publicbooleancopySDFileTo(StringsrcFileName,StringdestFileName,Stringfilename)
  93. throwsIOException{
  94. FilesrcFile=newFile(srcFileName);
  95. FiledestFile=newFile(destFileName+"/"+filename);
  96. returncopyFileTo(srcFile,destFile);
  97. }
  98. /**
  99. *拷贝SD卡上指定目录的所有文件
  100. *
  101. *@paramsrcDirName
  102. *@paramdestDirName
  103. *@return
  104. *@throwsIOException
  105. */
  106. publicbooleancopySDFilesTo(StringsrcDirName,StringdestDirName,Stringfilename)
  107. throwsIOException{
  108. FilesrcDir=newFile(srcDirName);
  109. FiledestDir=newFile(destDirName+"/"+filename);
  110. returncopyFilesTo(srcDir,destDir);
  111. }
  112. /**
  113. *移动SD卡上的单个文件
  114. *
  115. *@paramsrcFileName
  116. *@paramdestFileName
  117. *@return
  118. *@throwsIOException
  119. */
  120. publicbooleanmoveSDFileTo(StringsrcFileName,StringdestFileName)
  121. throwsIOException{
  122. FilesrcFile=newFile(SDPATH+srcFileName);
  123. FiledestFile=newFile(SDPATH+destFileName);
  124. returnmoveFileTo(srcFile,destFile);
  125. }
  126. /**
  127. *移动SD卡上的指定目录的所有文件
  128. *@paramsrcDirName
  129. *@paramdestDirName
  130. *@return
  131. *@throwsIOException
  132. */
  133. publicbooleanmoveSDFilesTo(StringsrcDirName,StringdestDirName)
  134. throwsIOException{
  135. FilesrcDir=newFile(SDPATH+srcDirName);
  136. FiledestDir=newFile(SDPATH+destDirName);
  137. returnmoveFilesTo(srcDir,destDir);
  138. }
  139. /*
  140. *将文件写入sd卡。如:writeSDFile("test.txt");
  141. */
  142. //publicOutputwriteSDFile(StringfileName)throwsIOException{
  143. //Filefile=newFile(SDPATH+fileName);
  144. //FileOutputStreamfos=newFileOutputStream(file);
  145. //returnnewOutput(fos);
  146. //}
  147. /*
  148. *在原有文件上继续写文件。如:appendSDFile("test.txt");
  149. */
  150. //publicOutputappendSDFile(StringfileName)throwsIOException{
  151. //Filefile=newFile(SDPATH+fileName);
  152. //FileOutputStreamfos=newFileOutputStream(file,true);
  153. //returnnewOutput(fos);
  154. //}
  155. /*
  156. *从SD卡读取文件。如:readSDFile("test.txt");
  157. */
  158. //publicInputreadSDFile(StringfileName)throwsIOException{
  159. //Filefile=newFile(SDPATH+fileName);
  160. //FileInputStreamfis=newFileInputStream(file);
  161. //returnnewInput(fis);
  162. //}
  163. /**
  164. *建立私有文件
  165. *
  166. *@paramfileName
  167. *@return
  168. *@throwsIOException
  169. */
  170. publicFilecreatDataFile(StringfileName)throwsIOException{
  171. Filefile=newFile(FILESPATH+fileName);
  172. file.createNewFile();
  173. returnfile;
  174. }
  175. /**
  176. *建立私有目录
  177. *
  178. *@paramdirName
  179. *@return
  180. */
  181. publicFilecreatDataDir(StringdirName){
  182. Filedir=newFile(FILESPATH+dirName);
  183. dir.mkdir();
  184. returndir;
  185. }
  186. /**
  187. *删除私有文件
  188. *
  189. *@paramfileName
  190. *@return
  191. */
  192. publicbooleandelDataFile(StringfileName){
  193. Filefile=newFile(FILESPATH+fileName);
  194. returndelFile(file);
  195. }
  196. /**
  197. *删除私有目录
  198. *
  199. *@paramdirName
  200. *@return
  201. */
  202. publicbooleandelDataDir(StringdirName){
  203. Filefile=newFile(FILESPATH+dirName);
  204. returndelDir(file);
  205. }
  206. /**
  207. *更改私有文件名
  208. *
  209. *@paramoldName
  210. *@paramnewName
  211. *@return
  212. */
  213. publicbooleanrenameDataFile(StringoldName,StringnewName){
  214. FileoldFile=newFile(FILESPATH+oldName);
  215. FilenewnewFile=newFile(FILESPATH+newName);
  216. returnoldFile.renameTo(newFile);
  217. }
  218. /**
  219. *在私有目录下进行文件复制
  220. *
  221. *@paramsrcFileName
  222. *:包含路径及文件名
  223. *@paramdestFileName
  224. *@return
  225. *@throwsIOException
  226. */
  227. publicbooleancopyDataFileTo(StringsrcFileName,StringdestFileName)
  228. throwsIOException{
  229. FilesrcFile=newFile(FILESPATH+srcFileName);
  230. FiledestFile=newFile(FILESPATH+destFileName);
  231. returncopyFileTo(srcFile,destFile);
  232. }
  233. /**
  234. *复制私有目录里指定目录的所有文件
  235. *
  236. *@paramsrcDirName
  237. *@paramdestDirName
  238. *@return
  239. *@throwsIOException
  240. */
  241. publicbooleancopyDataFilesTo(StringsrcDirName,StringdestDirName)
  242. throwsIOException{
  243. FilesrcDir=newFile(FILESPATH+srcDirName);
  244. FiledestDir=newFile(FILESPATH+destDirName);
  245. returncopyFilesTo(srcDir,destDir);
  246. }
  247. /**
  248. *移动私有目录下的单个文件
  249. *
  250. *@paramsrcFileName
  251. *@paramdestFileName
  252. *@return
  253. *@throwsIOException
  254. */
  255. publicbooleanmoveDataFileTo(StringsrcFileName,StringdestFileName)
  256. throwsIOException{
  257. FilesrcFile=newFile(FILESPATH+srcFileName);
  258. FiledestFile=newFile(FILESPATH+destFileName);
  259. returnmoveFileTo(srcFile,destFile);
  260. }
  261. /**
  262. *移动私有目录下的指定目录下的所有文件
  263. *
  264. *@paramsrcDirName
  265. *@paramdestDirName
  266. *@return
  267. *@throwsIOException
  268. */
  269. publicbooleanmoveDataFilesTo(StringsrcDirName,StringdestDirName)
  270. throwsIOException{
  271. FilesrcDir=newFile(FILESPATH+srcDirName);
  272. FiledestDir=newFile(FILESPATH+destDirName);
  273. returnmoveFilesTo(srcDir,destDir);
  274. }
  275. /*
  276. *将文件写入应用私有的files目录。如:writeFile("test.txt");
  277. */
  278. publicOutputStreamwirteFile(StringfileName)throwsIOException{
  279. OutputStreamos=context.openFileOutput(fileName,
  280. Context.MODE_WORLD_WRITEABLE);
  281. returnos;
  282. }
  283. /*
  284. *在原有文件上继续写文件。如:appendFile("test.txt");
  285. */
  286. //publicOutputappendFile(StringfileName)throwsIOException{
  287. //OutputStreamos=context.openFileOutput(fileName,Context.MODE_APPEND);
  288. //returnnewOutput(os);
  289. //}
  290. /*
  291. *从应用的私有目录files读取文件。如:readFile("test.txt");
  292. */
  293. //publicInputreadFile(StringfileName)throwsIOException{
  294. //InputStreamis=context.openFileInput(fileName);
  295. //returnnewInput(is);
  296. //}
  297. /**********************************************************************************************************/
  298. /*********************************************************************************************************/
  299. /**
  300. *删除一个文件
  301. *
  302. *@paramfile
  303. *@return
  304. */
  305. publicbooleandelFile(Filefile){
  306. if(file.isDirectory())
  307. returnfalse;
  308. returnfile.delete();
  309. }
  310. /**
  311. *删除一个目录(可以是非空目录)
  312. *@paramdir
  313. */
  314. publicbooleandelDir(Filedir){
  315. if(dir==null||!dir.exists()||dir.isFile()){
  316. returnfalse;
  317. }
  318. for(Filefile:dir.listFiles()){
  319. if(file.isFile()){
  320. file.delete();
  321. }elseif(file.isDirectory()){
  322. delDir(file);//递归
  323. }
  324. }
  325. dir.delete();
  326. returntrue;
  327. }
  328. /**
  329. *拷贝一个文件,srcFile源文件,destFile目标文件
  330. *@parampath
  331. *@throwsIOException
  332. */
  333. publicbooleancopyFileTo(FilesrcFile,FiledestFile)throwsIOException{
  334. if(srcFile.isDirectory()||destFile.isDirectory())
  335. returnfalse;//判断是否是文件
  336. FileInputStreamfis=newFileInputStream(srcFile);
  337. FileOutputStreamfos=newFileOutputStream(destFile);
  338. intreadLen=0;
  339. byte[]buf=newbyte[1024];
  340. while((readLen=fis.read(buf))!=-1){
  341. fos.write(buf,0,readLen);
  342. }
  343. fos.flush();
  344. fos.close();
  345. fis.close();
  346. returntrue;
  347. }
  348. /**
  349. *拷贝目录下的所有文件到指定目录
  350. *
  351. *@paramsrcDir
  352. *@paramdestDir
  353. *@return
  354. *@throwsIOException
  355. */
  356. publicbooleancopyFilesTo(FilesrcDir,FiledestDir)throwsIOException{
  357. if(!destDir.exists()){
  358. destDir.mkdirs();
  359. }
  360. if(!srcDir.isDirectory()||!destDir.isDirectory())
  361. returnfalse;//判断是否是目录
  362. File[]srcFiles=srcDir.listFiles();
  363. for(inti=0;i<srcFiles.length;i++){
  364. if(srcFiles[i].isFile()){
  365. //获得目标文件
  366. FiledestFile=newFile(destDir.getPath()+"//"
  367. +srcFiles[i].getName());
  368. copyFileTo(srcFiles[i],destFile);
  369. }elseif(srcFiles[i].isDirectory()){
  370. FiletheDestDir=newFile(destDir.getPath()+"//"
  371. +srcFiles[i].getName());
  372. copyFilesTo(srcFiles[i],theDestDir);
  373. }
  374. }
  375. returntrue;
  376. }
  377. /**
  378. *移动一个文件
  379. *
  380. *@paramsrcFile
  381. *@paramdestFile
  382. *@return
  383. *@throwsIOException
  384. */
  385. publicbooleanmoveFileTo(FilesrcFile,FiledestFile)throwsIOException{
  386. booleaniscopy=copyFileTo(srcFile,destFile);
  387. if(!iscopy)
  388. returnfalse;
  389. delFile(srcFile);
  390. returntrue;
  391. }
  392. /**
  393. *移动目录下的所有文件到指定目录
  394. *@paramsrcDir
  395. *@paramdestDir
  396. *@return
  397. *@throwsIOException
  398. */
  399. publicbooleanmoveFilesTo(FilesrcDir,FiledestDir)throwsIOException{
  400. if(!srcDir.isDirectory()||!destDir.isDirectory()){
  401. returnfalse;
  402. }
  403. File[]srcDirsrcDirFiles=srcDir.listFiles();
  404. for(inti=0;i<srcDirFiles.length;i++){
  405. if(srcDirFiles[i].isFile()){
  406. FileoneDestFile=newFile(destDir.getPath()+"//"
  407. +srcDirFiles[i].getName());
  408. moveFileTo(srcDirFiles[i],oneDestFile);
  409. delFile(srcDirFiles[i]);
  410. }elseif(srcDirFiles[i].isDirectory()){
  411. FileoneDestFile=newFile(destDir.getPath()+"//"
  412. +srcDirFiles[i].getName());
  413. moveFilesTo(srcDirFiles[i],oneDestFile);
  414. delDir(srcDirFiles[i]);
  415. }
  416. }
  417. returntrue;
  418. }
  419. }

更多相关文章

  1. android中Bitmap图像处理 修改图片大小以及保存时的文件大小
  2. Android 读取配置文件的内容
  3. 文件上传
  4. android文件上传到服务器
  5. [置顶] 入门Android开发--总目录
  6. wzplayer for android V1.5.3 (新增YUV文件播放)
  7. Android解析自定义xml文件(方案一)

随机推荐

  1. android上传图片至服务器
  2. android 网络广播 类似QQ动态检查网络
  3. ExpandableListView设置选中child的背景
  4. Android中对XML文件的解析
  5. Android(安卓)如何简单的实现【轮播图 】
  6. android实现拖动效果
  7. Android控件开发之四----ListView(3)
  8. Android中的HandlerThread的理解
  9. android获取SD卡的状态
  10. Android(安卓)关于listview