根据实际文件名将文件移动到其他文件夹

时间:2015-05-21 07:26:48

标签: java

根据实际文件名

将文件移动到其他文件夹

根据文件名

将文件从folder1移动到其他文件夹

示例:

Inside D drive:名为Tango的文件夹有3个文件:

John1.txt
John2.txt
John3.txt

D驱动器内部:有3个名为:

的文件夹
John1
John2
John3

我想根据文件名与文件夹名称的匹配,将文件从Tango文件夹移动到其他文件夹(例如John1或John2或John3)。

到目前为止,我能够列出文件夹的内容,但我无法弄清楚如何实现上述目标。

public class FileCopy {

    public static void main(String[] args) {

        File f1 = new File("Tango");
        String[] allFiles = f1.list();

        for (String files : allFiles) {
            System.out.println(files);
        }
    }
}

5 个答案:

答案 0 :(得分:3)

获取文件夹中的文件,获取名称,提取扩展名,使用File.mkDir()创建目录,然后File.renameTo()移动目录:

// Get array with all files of `Tango`
File[] allFiles = f1.listFiles();

for (File file : allFiles) {
    // extract the extension John1.txt > John1
    String filename = file.getName().substring(0, file.getName().indexOf("."));
    // get the the new folder
    File newDir = new File(filename);

    // create the folder if not exists (delete this if you dont want to make new dir)
    if (!newDir.exists()) {
        newDir.mkDir();
    }

    // and rename it to the new folder + name
    file.renameTo(new File(newDir.getAbsolutePath() + File.separator + file.getName()));

}

答案 1 :(得分:1)

如果您至少使用Java 7(您应该这样做):

import java.io.IOException;
import java.nio.file.*;

public class FileCopy {
    public static void main(String[] args) throws IOException {
        try (DirectoryStream<Path> paths = Files.newDirectoryStream(Paths.get("Tango"))) {
            for (Path path : paths) {
                String fileName = path.getFileName().toString();
                Files.move(path, path.getParent().resolveSibling(fileName.substring(0, fileName.length() - 4)).resolve(fileName));
            }
        }
    }
}

答案 2 :(得分:0)

为什么不尝试合并java.io.File.mkdir()java.nio.file.Files.move()

答案 3 :(得分:0)

假设您要将名称中包含john1的文件移动到您可以使用以下代码的文件夹john1

public static void main(String[] args) {
    try {

        String pathname = "Tango";
        File f1 = new File(pathname);
        String[] allFiles = f1.list();
        InputStream inStream = null;
        OutputStream outStream = null;
        byte[] buffer = new byte[1024];
        for (String file : allFiles) {
            if (file.contains("john1")) {
                File source = new File(pathname + "\\" + file);
                File dest = new File("D:\\john1\\" + file);
                inStream = new FileInputStream(source);
                outStream = new FileOutputStream(dest);
                int length;
                while ((length = inStream.read(buffer)) > 0) {
                    outStream.write(buffer, 0, length);
                }
                inStream.close();
                outStream.close();
                source.delete();
            }
        }

    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

答案 4 :(得分:0)

public class FileCopy {

    public static void main(String[] args) {

        File folder= new File("Tango");
        File[] files = folder.listFiles();

        for (Files file : files ) {
                 String filename = file.getName().substring(0,file.getName().indexOf("."));
                 File yourDir= new File(filename); 

              if (!yourDir.exists()) {
                      yourDir.mkDir();
                  }

                file.renameTo(new File(yourDir.getAbsolutePath() + file.getName()));
        }
    }
}

.renameTo:用于移动文件

如果不存在,你可以创建你的目录

 if (!yourDir.exists()) {
        yourDir.mkDir();
    }