public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
源文件夹
File source = new File("D:\\A1\\");
File dest = new File("D:\\A2\\");
File[] files = source.listFiles();
for (File file: source.listFiles()){
String x=(source+"\\"+file.getName());
String y=(dest + "\\"+ file.getName());
File f1 = new File(x);
f1.renameTo(new File(y));
}
此代码正在将文件从源文件移动到目标文件夹,但我想将文件移动到目标文件夹。它会在系统日期附加其名称 请帮忙
答案 0 :(得分:1)
你可以这样做
DateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date date = new Date();
y=(dest + "\\"+ file.getName()+dateFormat.format(date));
答案 1 :(得分:1)
您需要将时间戳附加到文件名,最好在扩展名之前。
请注意,操作系统可能不允许某些字符出现在文件名中,例如冒号和斜杠可能无法在窗口中使用,因此您需要为它们找到替换字符。
此外,您需要检查renameTo的返回值,以检查文件是否真的被移动。
当且仅当重命名成功时,返回true;否则是假的
您可以尝试这样的事情:
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
String ts = dateFormat.format(date);
File source = new File("D:\\A1\\");
File dest = new File("D:\\A2\\");
for (File file : source.listFiles()) {
String x = (source + "\\" + file.getName());
String y = (dest + "\\" + addTimestamp(file.getName(), ts));
File f1 = new File(x);
if(f1.renameTo(new File(y))){
System.out.println("moved: " + y);
} else {
System.out.println("unable to move: " + y);
}
}
}
private static String addTimestamp(String name, String ts) {
int lastIndexOf = name.lastIndexOf('.');
return (lastIndexOf == -1 ?
name + "_" + ts
:
name.substring(0, lastIndexOf) + "_" + ts +
name.substring(lastIndexOf))
.replaceAll("[\\/:\\*\\?\"<>| ]", "_");
}
最后,对于移动文件,请更好地使用Files#move作为renameTo
本身的javadoc建议。
答案 2 :(得分:0)
根据Java Docs of File#renameTo方法,它是一个依赖于平台的实现,它可能无法正常工作。
此方法行为的许多方面都是固有的 依赖于平台:重命名操作可能无法移动 从一个文件系统到另一个文件系统的文件,它可能不是原子的,它 如果文件具有目标抽象路径名,则可能不会成功 已经存在。应始终检查返回值以确保 重命名操作成功。
请注意,Files类定义了移动或重命名a的移动方法 以独立于平台的方式提交文件。
您也可以使用Files#move方法。这是一种独立于平台的方法。
希望这有帮助