最近在做一个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里面的,那么就会操作失败,不知道是为什么,,如果有人实现同样的功能需要注意下。

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

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

Java实现文件重命名的更多相关文章

  1. 【Java EE 学习 22 上】【文件上传】【目录打散】【文件重命名】

    1.文件上传概述 (1)使用<input type="file">的方式来声明一个文件域. (2)表单提交方式一定要是post方式才行 (3)表单属性enctype 默 ...

  2. Java用来进行批量文件重命名,批量提取特定类型文件

    原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一 ...

  3. Java 文件重命名

    Java 文件重命名 /** * 重命名文件 * @param fileName * @return */ public static void renameFile(String filePath, ...

  4. servlet操作本地文件汇总: 判断文件是否存在;文件重命名;文件复制; 获取文件属性信息,转成Json对象; 获取指定类型的文件; 查找替换.txt中的文本

    package servlet; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; ...

  5. git 文件重命名

    文件重命名 git mv old_name new_name git commit -m 'rename' git push origin master 删除文件 git rm filename

  6. Linux下文件重命名、创建、删除、修改及保存文件

    一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. ...

  7. Linux环境给文件重命名

    Linux环境给文件重命名时,如果重命名后的文件名称与当前路径下已存在的文件名称相同,则重命名的文件会覆盖相同名称的文件内容: 例如:新建文件testfile1,内容为mytest: 新建文件test ...

  8. C#给文件重命名

    使用的主要方法是: File.Move(oldFileDir,newFileDir);//这个是移动文件的方法 Directory.GetFiles(dir);//获取dir路径下的所有文件的全路径 ...

  9. PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink

    php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...

随机推荐

  1. Mesos的资源分配

    Apache Mesos能够成为最优秀的数据中心资源管理器的一个重要功能是面对各种类型的应用,它具备像交警一样的疏导能力.本文将深入Mesos的资源分配内部, 探讨Mesos是如何根据客户应用需求,平 ...

  2. 高性能Web服务器Nginx的配置与部署研究(10)核心模块之HTTP模块Location相关指令

    一.基本语法 语法:location [= | ~ | ~* | ^~] </uri/> {...} 缺省:N/A 作用域:server 二.匹配规则 1. 四种匹配方式 = 精确匹配 ~ ...

  3. Codeforces 712D DP

    题意:有2个人玩游戏,他们都有个初始值a和b, 游戏进行t轮, 每次可以选择加上一个[-k, +k]之间的数字,问有多少种方案a的和严格大于b的和. 思路:如果不考虑多于这个条件,只是询问有多少种方案 ...

  4. MongoDB 数组操作

    $push:向文档数组中添加元素,如果没有该数组,则自动添加数组.db.users.insert({"name":"zhang"})db.users.updat ...

  5. 为单个项目添加多个远程仓库(Git操作)

    书写代码时,有时候需要维护多个仓库,这时候就面对了这个需求,解决方法如下: $ git remote add github ****** $ git remote add mayun ****** 书 ...

  6. Python tkinter 副窗体置顶和取消置顶

    root = Tk() #置顶root.wm_attributes('-topmost',1) #取消置顶 root.wm_attributes('-topmost',0)

  7. Python OCR提取普通数字图形验证中的数字

    截取图形验证码: # -*- coding: UTF-8 -*- ''' Created on 2016年7月4日 @author: xuxianglin ''' import os import t ...

  8. Cocos2dx之touch事件

    今天看了下ccocos2dx touch事件部分的源码,从CCTouch.CCTouchHandler和CCTouchDispatcher简单的做了分析和总结,先直接看源码吧! 1.CCTouch c ...

  9. AJAX和DHTML

    DHTML: (动态的html)本身不是一门新语言,而是一门新技术,包含以下 html . css . dom . js AJAX  :  也是一门新技术包含    html . css.  dom ...

  10. Web测试实践-任务进度-Day01

    任务安排 说明:小组全体成员都参与了会议,对该实践进行分析以及对实践任务的拆分以及进行了任务的分配. 小组成员 华同学.郭同学.覃同学.刘同学.穆同学.沈同学 阶段划分 阶段1:评测被测系统 1.对被 ...