在Windows操作系统下,File类的renameTo方法可以用来改名或者移动文件,在同一个目录下renameTo方法起的作用是改名,在不同目录下起的作用是移动。
但是这个方法在Linux下工作却不是这样的,在linux系统下renameTo方法只能起到改名作用,而无法移动文件,也就是说当源文件和目标文件不在同一个目录时,该方法无法工作。
因此如果用到该方法时请一定注意这个差异,在linux下移动文件必须自己写代码来实现或者执行操作系统的移动文件的命令。下面给出一段拷贝文件的代码,移动操作可以在拷贝后删除源文件来实现
private void writeTo(File f, File newFile) throws IOException{
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream(newFile);
try{
byte[] buf = new byte[8192];
do{
int rc = fis.read(buf);
if(rc == -1)
break;
fos.write(buf, 0, rc);
if(rc < buf.length)
break;
}while(true);
}finally{
fis.close();
fos.close();
}
}

