gpt4 book ai didi

java - 如何在将文件夹移动到另一个文件夹时在文件夹中的多个文件中附加日期和时间

转载 作者:行者123 更新时间:2023-11-30 09:08:09 24 4
gpt4 key购买 nike

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));

}

此代码将文件从源文件夹移动到目标文件夹,但我希望文件移动到目标文件夹时。它将系统日期附加到它的名称请帮忙

最佳答案

您需要将时间戳附加到文件名,最好恰好在扩展名之前。

请注意,操作系统可能不允许某些字符出现在文件名中,例如冒号和斜线可能无法在 Windows 上使用,因此您需要找到它们的替代品。

您还需要检查 renameTo 的返回值检查文件是否真的被移动过。

returns true if and only if the renaming succeeded; false otherwise

你可以尝试这样的事情:

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 所暗示的那样。

关于java - 如何在将文件夹移动到另一个文件夹时在文件夹中的多个文件中附加日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com