Переместить файл Java с определенным расширением файла

Привет, я работаю над простой программой, и для настройки программы мне нужна программа для проверки каталога на наличие zip-файлов, а любые zip-файлы нужно переместить в другую папку.

Допустим, у меня есть папка1, и она содержит 6 zip-файлов, а затем у меня есть еще одна папка с именем папка2, в которой мне нужны все почтовые индексы, и только почтовые индексы в папке1 перемещены в папку2

Спасибо за любую помощь в решении этой проблемы.

Кстати, я нуб, поэтому любые примеры кода будут очень признательны


person GFlam    schedule 22.04.2011    source источник


Ответы (5)


Для каждого файла в folder1 используйте String#endsWith(), чтобы узнать, заканчивается ли имя файла на ".zip". Если это так, переместите его в folder2. FilenameFilter предоставляет хороший способ сделать это ( хотя это и не обязательно).

Это будет выглядеть примерно так (не проверено):

File f1 = new File("/path/to/folder1");
File f2 = new File("/path/to/folder2");

FilenameFilter filter = new FilenameFilter()
{
    @Override public boolean accept(File dir, String name)
    {
        return name.endsWith(".zip");
    }
};

for (File f : f1.listFiles(filter))
{
    // TODO move to folder2
}
person Matt Ball    schedule 22.04.2011

Шаблон соответствия «*.zip» в файловой системе называется «подстановкой файлов». Вы можете легко выбрать все эти файлы с помощью файлового шаблона ".zip", используя эту документацию: Поиск файлов. java.nio.file.PathMatcher - это то, что вам нужно. В качестве альтернативы вы можете перечислить каталоги как обычно и использовать имя файла и метод «.endsWith()» String, который будет делать что-то подобное.

person Hut8    schedule 22.04.2011

Используйте FilenameFilter

String pathToDir = "/some/directory/path";
File myDir = new File(pathToDir);
File[] zipFiles = myDir.listFiles(new FilenameFilter() {

  public boolean accept(File dir, String name) {
    return name.endsWith(".zip")
  }
});
person Mike Yockey    schedule 22.04.2011

Список всех файлов в baseDir, если он заканчивается на «.zip», перемещает его в destDir

    // baseDir = folder1
    // destDir = folder2

    File[] files = baseDir.listFiles();
    for (int i=0; i<files.length; i++){
        if (files[i].endsWith(".zip")){
            files[i].renameTo(new File(destDir, files[i].getName()));
        }
    }

API renameTo

person kdabir    schedule 22.04.2011

Мое решение:

import java.io.*;
import javax.swing.*;
public class MovingFile
{
    public static void copyStreamToFile() throws IOException
    {
        FileOutputStream foutOutput = null;
        String oldDir =  "F:/CAF_UPLOAD_04052011.TXT.zip";
        System.out.println(oldDir);
        String newDir = "F:/New/CAF_UPLOAD_04052011.TXT.zip.zip"; // name the file in destination

        File f = new File(oldDir);              
        f.renameTo(new File(newDir));
    }
    public static void main(String[] args) throws IOException
    {
        copyStreamToFile();
    }
}
person Nishanth Thomas    schedule 08.12.2011