使用java在目录中的新文件

时间:2015-12-22 19:04:52

标签: java file directory

我想确定是否使用java将新文件或文档放在特定文件夹/目录中。例如,“C:\ Users \ User \ Documents”目录中没有文件,然后我从Internet下载了一个pdf文件,并将其放在上述目录中。如何使用java编程语言确定是否在目录中检测到新文件? (它还应该打印出目录的名称和新文件名)。我是否可以获得有关如何使用Java语言创建此类程序的任何提示?它应该是连续的或无限循环的。

我试过这个:

package readfilesfromfolder;
import java.io.File;


public class ReadFilesFromFolder {

public static File folder = new File("C:/Documents and Settings/My Documents/Downloads");
  static String temp = "";

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Reading files under the folder "+ folder.getAbsolutePath());
    listFilesForFolder(folder);
  }

  public static void listFilesForFolder(final File folder) {

    for (final File fileEntry : folder.listFiles()) {
      if (fileEntry.isDirectory()) {

        listFilesForFolder(fileEntry);
      } else {
        if (fileEntry.isFile()) {
          temp = fileEntry.getName();
          if ((temp.substring(temp.lastIndexOf('.') + 1,        temp.length()).toLowerCase()).equals("txt"))
            System.out.println("File= " + folder.getAbsolutePath()+ "\\" + fileEntry.getName());
        }

      }
    }
  }
}

但根据结果,它只是访问了目录,但没有列出任何新项目。此外,它还没有循环,因为我尚未放置它。谢谢:)(*注意:我还是Java编程的新手:) *)

2 个答案:

答案 0 :(得分:2)

您可以使用Watch Service。监视已注册对象的更改和事件的监视服务。例如,文件管理器可以使用监视服务来监视目录以进行更改,以便在创建或删除文件时它可以更新其文件列表的显示。 可以找到一个很好的例子here

您也可以使用Apache Foundation的Commons IO库,主要是org.apache.commons.io.monitor包。

答案 1 :(得分:0)

谢谢大家的提示! :)我发现如何使用WatchService执行此操作:)

这是基于我的研究和阅读的输出:)

 public static void main(String[] args) throws IOException{
    // TODO code application logic here
    WatchService watchService = FileSystems.getDefault().newWatchService();
    //The path needed for changes
    Path directory = Paths.get("C:\\Users\\User\\Documents");
    //To determine whether a file is created, deleted or modified
    //ENTRY_CREATE can be changed to ENTRY_MODIFY and ENTRY_DELETE
    WatchKey watchKey = directory.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
    //This portion is for the output of what file is created, modified, or deleted
    while (true){ 
        for (WatchEvent<?> event : watchKey.pollEvents()) {
            System.out.println(event.kind());
            Path file = directory.resolve((Path) event.context());
            System.out.println(file);
        }
    }
}

希望这可以帮助其他人。还要感谢帮助我的人以及用于创建这个的不同研究材料的作者:)向Mr.Kriechel致信这一点:)