私のプログラムは、指定されたファイルパスのファイル変更を監視しています。新しいファイルがある場合は通知を出しますが、親フォルダにサブフォルダが作成されると失敗します。親フォルダのファイルパスはC:/play
ですが、親フォルダ内にC:/play/abc
のような新しいサブフォルダが作成されていると、私のプログラムが検出できますが、abcフォルダにファイルを挿入しようとすると、プログラムは実行できません新しいファイルが作成されたことを検出します。私はvarious methodsをテストしましたが、残念ながら私は参照リンクに私にガイドを提供することができませんでしたか?私のサンプルコードは参照リンクのガイドに従っています
これは私のソースコードですサブディレクトリをチェックするため
サブディレクトリとJavaのメインディレクトリ監視
public class fileStatus
{
public static void main(String [] args) throws InterruptedException
{
try(WatchService svc = FileSystems.getDefault().newWatchService())
{
Map<WatchKey, Path> keyMap = new HashMap<>();
Path path = Paths.get("C:/play");
fileStatus fd = new fileStatus();
fd.registerAll(path);
keyMap.put(path.register(svc,
StandardWatchEventKinds.ENTRY_CREATE),
path);
WatchKey wk ;
do
{
wk = svc.take();
Path dir = keyMap.get(wk);
for(WatchEvent<?> event : wk.pollEvents())
{
WatchEvent.Kind<?> type = event.kind();
Path fileName = (Path)event.context();
System.out.println("\nThe new file :"+fileName+ "Event :" +type); //print the new file name
}
}while(wk.reset());
}
catch(IOException e)
{
System.out.println("Problem io in somewhere");
}
}
private void registerAll(Path path) throws IOException
{
Files.walkFileTree(path, new SimpleFileVisitor<Path>()
{
@SuppressWarnings("unused")
public FileVisitResult preVisitDireotry(Path path,BasicFileAttributes attrs) throws IOException
{
return FileVisitResult.CONTINUE;
}
});
}
}
Thisは、私の参照コードと私のフォルダ構造は次のようになりある
/root
/Folder A
/test.txt
/Folder B
/abc.txt
あなたの意志で作業する必要があります。 – AxelH