【问题标题】:How can you repeatedly check a folder and move any new files in the folder to another directory in Java?在 Java 中,如何反复检查文件夹并将文件夹中的任何新文件移动到另一个目录?
【发布时间】:2015-07-07 09:31:58
【问题描述】:

我正在用 java 编写一个程序,我想知道是否有办法重复检查文件夹中的任何新文件(每 30 秒左右)并将任何新文件移动到另一个文件夹。

我已经有了移动文件的工作代码,但是在检查文件夹中是否有新文件时找不到任何东西。

【问题讨论】:

    标签: java file directory


    【解决方案1】:

    您可以查看java.nio.file.WatchService,而不是使用重复计时器,它可以让您在添加、修改或删除目录中的文件时收到通知。

    【讨论】:

      【解决方案2】:

      我建议你使用Timer

      Timer timer = new Timer();
      List<String> list = new List();
      //repeat your timer
      timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
          //loop through the folder and get the names
          File folder = new File("your/path");
          File[] listOfFiles = folder.listFiles();
      
          for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
              if(list.contains(listOfFiles[i].getName())
               {
                   //already checked file
               }
            else
               {
                   //new file add your move logic and add it to the list
                   list.add(listOfFiles[i].getName());
               } 
            } 
          }
        }
      }, 2*60*1000, 2*60*1000);
      

      【讨论】:

        【解决方案3】:
        【解决方案4】:

        您可以使用像 Quartz 这样的调度程序来完成此操作,您可以在其中创建将由 java 执行的任务以实现此目标。

        无论如何,我认为这不是一个很好的解决方案。使用脚本可以更轻松地完成此操作。例如在 linux 中,您可以创建一个 file_scheduler.sh 脚本来列出文件夹中的文件并将它们移动到另一个文件夹中,并在每次需要时使用命令 crontab 执行此任务。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-08
          • 1970-01-01
          • 2013-12-08
          • 2015-05-05
          • 1970-01-01
          • 2019-01-23
          • 2021-02-21
          • 2015-03-17
          相关资源
          最近更新 更多