/ ** * * / com.zachary.io.utilのためのパッケージ変更、 インポートのjava.io.File; インポートにjava.io.IOException; / ** * @author Zachary.Zheng * @version 1.0 * @date 2019年11月9日日 * / publicクラスプロセスファイル{ / ** *定義のコールバック関数インタフェースを 呼び出すときに実現* * @author Zachary.Zhengは * @version 1.0 * @date 2019インディアン11越9日 * / 戦略で、パブリックインターフェイス{ 無効プロセス(ファイルファイル); } プライベート戦略戦略; プライベート文字列EXT; 公共プロセスファイル(戦略戦略、ストリングEXT){ スーパー(); this.strategy =戦略。 this.ext = EXT。 } }キャッチ(例外e){ パブリックProcessFiles(){ スーパー()。 } 公共のボイド開始(文字列[] args)を{ 試み{ 場合(args.length == 0){ processDirectoryTree(新しいファイル() ""); }他{ (文字列引数:引数)のために{ ファイルfileArg =新しいファイル(引数)。 IF(fileArg.isDirectory()){ processDirectoryTree(fileArg)。 }他{ 場合(!arg.endsWith( "" + EXT)){ argに+ = "" + EXT。 } //执行回调函数 strategy.process(新しいファイル(引数).getCanonicalFile()); } } } // TODO:ハンドル例外 } } 公共のボイドprocessDirectoryTree(ファイルのルート)がスローにIOException { のための(ファイルのファイル: "。* \\" Directory.walk(root.getAbsolutePath()、+ EXT)){ //执行回调函数 strategy.process(file.getCanonicalFile( )); } } パブリック静的無効メイン(文字列[] args){ 新しいProcessFilesは(新しいProcessFiles.Strategy(){ //回调函数 公共ボイドプロセス(ファイルファイル){ System.out.printlnは(ファイル); } }の"Java" ).start(引数);; } } / *出力:(サンプル) E:\ \ javaBaseLearn \\ \\のIOStreamワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ DirList2.java E:\\ javaBaseLearn \\のIOStream \ワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ Directory.java E:\\ javaBaseLearn \\ \\のIOStreamワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ DirList.java E:\\ javaBaseLearn \\ \\のIOStreamワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ DirList3.java E:\\ javaBaseLearn \\ \\のIOStreamワークスペース\ \ javaの-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ PPrint.java E:\\ javaBaseLearn \\ \\のIOStreamワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ \\ザカリーIO \\ utilの\\ ProcessFiles.java E:\\ javaBaseLearn \\ \\のIOStreamワークスペース\\のjava-IO-ストリーム\\ SRC \\コム\\ザカリー\\ IO \\ utilの\\ TreeInfo .java * ///:〜