Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java在目录中创建新文件_Java_File_Directory - Fatal编程技术网

使用java在目录中创建新文件

使用java在目录中创建新文件,java,file,directory,Java,File,Directory,我想确定是否使用java将新文件或文档放置在特定的文件夹/目录中。例如,“C:\Users\User\Documents”目录中没有任何文件,然后我从Internet下载了一个pdf文件,并被放在提到的目录中。如何使用java编程语言确定是否在目录中检测到新文件?(还应打印出目录名和新文件名)。关于如何使用Java语言创建此类程序,我可以提供一些提示吗?它应该是连续的或在一个无限循环中 我试着用这个: package readfilesfromfolder; import java.io.Fil

我想确定是否使用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编程新手:)*)

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


你也可以使用Apache基金会的库,主要是包。

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

这是根据我的研究和阅读得出的结果:)

publicstaticvoidmain(字符串[]args)引发IOException{
//此处的TODO代码应用程序逻辑
WatchService WatchService=FileSystems.getDefault().newWatchService();
//更改所需的路径
Path directory=Path.get(“C:\\Users\\User\\Documents”);
//确定是否创建、删除或修改文件的步骤
//条目创建可以更改为条目修改和条目删除
WatchKey WatchKey=directory.register(watchService,StandardWatchEventKinds.ENTRY\u CREATE);
//此部分用于输出创建、修改或删除的文件
虽然(正确){
for(WatchEvent事件:watchKey.pollEvents()){
System.out.println(event.kind());
路径文件=directory.resolve((Path)event.context());
System.out.println(文件);
}
}
}

希望这能帮助其他人。也要感谢那些帮助我的人以及创建这本书的不同研究材料的作者:)这本书要归功于Kriechel先生:)

检查这本书的使用
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);
        }
    }
}