想用java实现一个移动文件的功能,看到api里面说File类有一个renameTo的方法。可以重命名文件,这个操作就相当于移动文件。看起来感觉不错。在使用这个方法时发现了一些问题。
代码如下:
package fileOperation;
import java.io.File;
/**
*
* @author wakin
*
*/
public class MoveFile {
/**
* 测试移动文件,如果源文件不存在则抛出运行期异常。用renameTo来实现
* 文件或目录的移动,true表示操作成功。
* @param source_name
* @param dest_name
* @return
*/
public boolean moveFile(String source_name,String dest_name) {
File source_file = new File(source_name);
File dest_file = new File(dest_name);
if(!source_file.exists())
throw new RuntimeException("Move: no such file"+source_name);
return source_file.renameTo(dest_file);
}
}
我测试环境 OS XP sp2 两个盘。C和D 均是ntfs格式的。
当输入moveFile("c:/1.txt","D:/11.txt")时,通过。
当输入moveFile("c:/1","c:/11")时,通过。
当输入moveFile("c:/1","D:/11")时,失败。
测试多次后发现只要是跨盘移动目录是都是无法通过。查看api,定义如下:
renameTo
public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。
参数:
dest - 指定文件的新抽象路径名
返回:
当且仅当重命名成功时,返回 true;否则返回 false
疑问:我的两个盘都是ntfs格式的啊,应该不存在跨文件系统的问题,但是为什么不能通过呢?在网上找了半天也没什么解决办法。写在博客里,希望明白的人能赐教。呵呵。
分享到:
相关推荐
java的file rename方法 ...不过后来经常发现问题:File#renameTo(File)方法会返回失败(false),文件没有移动,又查不出原因,再后来干脆弃用该方法,自己实现一个copy方法,问题倒是再也没有出现过。
Rename zhuru
下面小编就为大家带来一篇linux下用renameTo方法修改java web项目中文件夹名称的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
log4j:ERROR Failed to rename错误解决办法 http://www.blogjava.net/DreamAngel/archive/2011/11/10/363400.html
解决log4j:ERROR Failed to rename, win系统占用文件无法改名字的问题
log4j:ERROR Failed to rename错误; 网上查找了下原因,大概意思是日志文件始终被占有,所以当log4j对日志文件进行rename时,就发生了Failed to rename错误 。要修改log4j的源码,附件是我修改好后的,方便大家...
log4j:ERROR Failed to rename
一款老牌的文件重命名工具,功能齐全,只有你想不到的。
Tag&Rename 3.5.1
Quick File Rename 批量修改文件后缀,功能简单,但很实用。个人认为比那些体积庞大的工具要好用的多。
rename的用法 rename支持正则表达式 rename支持通配符 rename的参数
在Linux系统中修改文件名可以用mv命令,但是它只能对单个文件进行操作,如要要批量执行还要写shell脚本,用for语句迭代执行,不过Linux中另外一个命令支持批量替换文件名,它是rename,rename支持正则表达式匹配。...
base.apk.rename
VCRename改工程名工具 vc rename
ORACLE Rename Table的语法
在windows系统下对图片名称进行批量处理的软件,可以批量删除字符、修改格式,对图名进行排序等操作极其简单。