最近在做一个Android上面的一个文件管理器的apk,有文件名重命名和剪切的功能。

一般的思路如下:

重命名:先新建一个文件,复制原先的文件,读写文件,最后删除原先文件

剪切:先复制原先的文件,删除原先文件

以上方法是有bug的,如果磁盘的空间不够的话, 则会出现错误。同时Java的File类中提供重名和剪切的功能。,原先怎么没有发现呢。

下面是Java Api中的方法介绍

renameTo

public boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。

此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。

参数:
dest - 指定文件的新抽象路径名
返回:
当且仅当重命名成功时,返回 true;否则返回 false
抛出:
SecurityException - 如果存在安全管理器,且其
SecurityManager.checkWrite(java.lang.String) 方法拒绝对原路径名和新路径名进行写访问
NullPointerException - 如果参数
destnull

但是要注意目标文件dest那个目录必须要存储。

但是还有个问题,我们公司使用的是mtk的解决方案,手机内部也有个默认存储空间,还支持扩展sdcard,如果file1剪切到file2,且file1和file2不是同一个sdcard里面的,那么就会操作失败,不知道是为什么,,如果有人实现同样的功能需要注意下。

遇到这样的情况,只能使用上面的笨方法了。不过在操作前需要检测可用空间,防止出现错误,这个是程序员的本分嘛。

如果复制或者是剪切的是目录,也就是文件夹的话,那么需要循环遍历了,循环的穿件文件夹了,反正挺复杂的,

最新文章

  1. 纸箱堆叠 bzoj 2253
  2. ASP.NET MVC 部署全站HTTPS
  3. Java多线程系列--“基础篇”04之 synchronized关键字
  4. 屠龙之路_大杀技之倚天屠龙_TenthDay
  5. django rest framework 入门
  6. sizeof运算符和strlen函数的区别
  7. post 405 method not allowed
  8. java jdbc 封装。。
  9. ffmpeg编码YUV420视频序列
  10. android 如何解决模块之间的通讯的耦合问题
  11. iOS opencv
  12. js执行环境深入研究
  13. OpenCV 之 图像分割 (一)
  14. php的api接口
  15. 为django项目配置celery的后台启动
  16. spring 2.5.6 错误:Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher
  17. linux内存源码分析 - 零散知识点
  18. Spring Boot 2.0 新特性和发展方向
  19. tomcat jsp页面乱码解决
  20. 喵哈哈村的魔法考试 Round #10 (Div.2) 题解

热门文章

  1. Spring Data JPA + layui的前台分页插件layPage实现页面的分页
  2. file_get_contents无法请求https连接的解决方法 php开启curl
  3. 71. Simplify Path压缩文件的绝对路径
  4. 344. Reverse String 最基础的反转字符串
  5. 添加字段modify
  6. EF配置文件初始化数据库 codefirst
  7. Perl语言编程>>学习笔记2
  8. 06 Counting Point Mutations
  9. [GO]字符串的使用
  10. 如何设置才能远程登录Mysql数据库