当前位置: 首页 > 面试题库 >

更新:根据文件扩展名将文件从一个文件夹移动到另一个文件夹

乔望
2023-03-14
问题内容

情况:

我正在做一个自动化,我必须从一组文件中仅下载CSV文件。现在我只想将CSV文件从一个文件夹移动到另一个文件夹。

题:

您能为我提供代码,以便在文件移动后立即从源文件夹中删除文件吗?

到目前为止,这是我的代码:

public class MyFilteredFileList {

    public static void main(String a[])

    {
        try {

        File source = new File("C:\\Users\\sh370472\\Downloads");
        File dest = new File("E:\\Query\\");

            FileUtils.copyDirectory(source, dest, new FileFilter() {

                @Override
                public boolean accept(File pathname) 
                {
                    boolean source=pathname.getName().toLowerCase().endsWith(".csv");
                    if (source)
                        return true;
                         return false;
                   }

            });
        } catch (IOException e) {
          e.printStackTrace();
        }
    }
}

编辑:但是我仍然面临一个问题。它会立即下载所有文件,然后删除。但是我的要求是这样的-
它应该下载第一个文件->将下载的文件移到另一个文件夹中->从下载文件夹中删除第一个下载的文件->下载第二个文件夹…然后重复该过程


问题答案:

只需添加pathname.deleteOnExit(); 接受方法

@Override
 public boolean accept(File pathname) {
       boolean source = pathname.getName().toLowerCase().endsWith(".csv");

       if (source) {
           pathname.deleteOnExit();
           return true;
       }
   return false;
 }

整个代码:

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

/**
 * Created by Lenovo on 02/12/2018.
 */
public class FileMove {
    public static void main(String a[])

    {
        try {

            File source = new File("C:\\Users\\sh370472\\Downloads");
            File dest = new File("E:\\Query\\");

            FileUtils.copyDirectory(source, dest, new FileFilter() {

                @Override
                public boolean accept(File pathname) {
                    boolean source = pathname.getName().toLowerCase().endsWith(".csv");

                    if (source) {
                        pathname.deleteOnExit();
                        return true;
                    }
                    return false;
                }

            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


 类似资料:
  • 我需要过去7天的存储日志来移动一个新文件夹。但是,我不能移动它们,并得到了这个错误。 重命名(/var/www/html/eMarketing/storage/logs/old-log-2020-02-27,/var/www/html/eMarketing/storage/logs/laravel-2020-02-27.log):不是目录 我的密码在这里

  • 我正在尝试创建一个PowerShell脚本,当我的电脑打开时,我可以每天早上运行该脚本,以移动我最近下载的所有类型。x从文件夹y到目标z。 当我运行该代码时,我得到这个错误:

  • aws s3api copy-object-copy-source bucket-1-key*.txt-bucket bucket-1/folder/ 我在bucket的根目录中有许多txt文件,我想将它们移动到同一个bucket中的一个文件夹中。 太感谢了。

  • 我试图寻找'jpg,jpeg,png'文件在我的USB驱动器,并试图将它们一个接一个地移动到一个新的文件夹。请让我知道这里有什么问题。 错误:- 目标目录E\Mac\MovedPics不存在语音指令2。zip:E:\Mac目的地目录E\Mac\MovedPics不存在usbpicsdata。txt:E:\Mac REGEXP匹配:-E:\Mac\4。jpg回溯(最近一次调用last):文件“C:\

  • 我得到以下错误: 线程“main”java.lang.IllegalArgumentException:错误的fs:hdfs:/user/o/datasets/data.txt,应为:file:/// 也是如此,因为它们用于在文件系统之间传输文件,而不是在文件系统内传输文件。我还尝试了,但根本没有任何作用(没有错误或任何东西)。

  • 我也在尝试用Python创建一个脚本来读取文本文件。在文本文件的每一行上,都有一个文件名。我希望脚本在文本文件的每一行中循环,并将带有文件名的文件从循环的当前行、从源文件夹移动到特定的目标。 希望这段代码能更准确地说明我在做什么: 我想把文件的内容和特定的文件名放到一个数组中,但是我有62700个可能的文件名,所以我想如果它只是在循环到每一行时移动文件,那么它会更有效率吗? 我还想到了使用迭代器(