oli*_*ren 9 java linux filesystems
我们在尝试将文件从一个目录移动到另一个目录时错误的程序.经过多次调试后,我通过编写一个只将一个文件从一个目录移动到另一个目录的小实用程序来找到错误(下面的代码).事实证明,在本地文件系统上移动文件时工作正常,尝试将文件移动到另一个文件系统失败.
为什么是这样?问题可能是特定于平台的 - 如果重要的话,我们在ext3上运行Linux.
第二个问题; 我应该使用除了班级renameTo()方法以外的其他东西File吗?似乎这只适用于本地文件系统.
测试(以root身份运行):
touch /tmp/test/afile
java FileMover /tmp/test/afile /root/
The file move was successful
touch /tmp/test/afile
java FileMover /tmp/test/afile /some_other_disk/
The file move was erroneous
Run Code Online (Sandbox Code Playgroud)
码:
import java.io.File;
public class FileMover {
public static void main(String arguments[] ) throws Exception {
boolean success;
File file = new File(arguments[0]);
File destinationDir = new File(arguments[1]);
File destinationFile = new File(destinationDir,file.getName() );
success = file.renameTo(destinationFile);
System.out.println("The file move was " + (success?"successful":"erroneous"));
}
}
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 17
使用Files.move(Path source, Path target, CopyOption... opts).
请注意,ATOMIC_MOVE在文件系统之间移动文件时,不得提供该选项.
来自以下文件File.renameTo:
[...] 重命名操作可能无法将文件从一个文件系统移动到另一个文件系统 [...]
明显的解决方法是通过打开新文件"手动"复制文件,将内容写入文件,然后删除旧文件.
您也可以尝试使用FileUtils.moveFileApache Commons中的方法.
| 归档时间: |
|
| 查看次数: |
9328 次 |
| 最近记录: |