先说结论
移动功能时间短,并且在同磁盘更快
为何会有这疑问?
因我公司项目需求。
场景如下:客户生产环境中,经过客户的校验把AI识别错误的照片找出来,然后在让AI系统进行训练。如果让客户自己找很麻烦。所以想通过代码实现。就落到了小弟的头上。
代码实现
1.复制功能
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.time.Duration;
import java.time.Instant;
class CopyFile {
public static void main(String[] args) {
Instant minioTime = Instant.now();
String srcPathStr = "D:\\temp\\a\\jdk-8u191-windows-x64.exe"; //源文件地址
String desPathStr = "E:\\temp\\b"; //目标文件地址
//获取源文件的名称
String newFileName = srcPathStr.substring(srcPathStr.lastIndexOf("\\") + 1);
//源文件地址
desPathStr = desPathStr + File.separator + newFileName;
try {
//创建输入流对象
FileInputStream fis = new FileInputStream(srcPathStr);
//创建输出流对象
FileOutputStream fos = new FileOutputStream(desPathStr);
//创建搬运工具数据集
byte datas[] = new byte[1024 * 8];
//创建长度
int len = 0;
//循环读取数据
while ((len = fis.read(datas)) != -1)
{
fos.write(datas, 0, len);
}
fis.close();//释放资源
fis.close();//释放资源
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("耗时:"+ Duration.between(minioTime, Instant.now()).toMillis());
}
}
2.移动功能
import java.io.File;
import java.time.Duration;
import java.time.Instant;
class MoveFile {
public static void main(String[] agrs) {
Instant minioTime = Instant.now();
try {
//源文件
File file = new File("D:\\temp\\a\\jdk-8u191-windows-x64.exe");
//源文件移动至目标文件目录
if (file.renameTo(new File("E:\\temp\\b\\" + file.getName()))) {
//输出移动成功
System.out.println("success!");
} else {
//输出移动失败
System.out.println("fail!");
}
System.out.println("耗时:" + Duration.between(minioTime, Instant.now()).toMillis());
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果
源文件为200MB的文件。
复制功能 | 移动功能 | |
同磁盘 | 耗时:1231 | 耗时:6 |
不同磁盘 | 耗时:1178 | 耗时:788 |
综上所述移动功能时间短,并且在同磁盘更快