我想确定是否使用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编程的新手:) *)
答案 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致信这一点:)