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

时间:2014-05-19 09:35:35

标签: java

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

     }

此代码正在将文件从源文件移动到目标文件夹,但我想将文件移动到目标文件夹。它会在系统日期附加其名称 请帮忙

3 个答案:

答案 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方法。这是一种独立于平台的方法。

希望这有帮助