File.walk(path)
を利用して、いくつかのディレクトリの下位のすべてのフォルダとファイルを出力することができます。
引数として渡されたパスのディレクトリを再帰的に探索して、下位のすべてのディレクトリとフォルダを移動します。
ナビゲーションファイルはFileオブジェクトでアクセスが可能なため、Fileクラスが提供するAPIを利用してファイルを処理することができます。
例を詳しく説明します。
1. File.walk() : 再帰的にディレクトリのファイルリストを出力
例では、次のパスのディレクトリに移動し、ファイルリストを出力します。
~/tests/my_dir$ tree
.
├── a1.log
├── bb.log
├── t1.txt
├── t2.txt
├── test1
│ └── a1.log
├── test2
│ └── t3.txt
└── top.log
次のように File.walk()
を利用して、特定のルートを探索し、すべてのファイルを出力することができます。
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walk().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
File APIでファイルを処理する
forEach
に巡回するとき、Fileオブジェクトを提供するため、FileクラスのすべてのAPIを使用してファイルを処理することができます。
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walk().forEach {
if (it.isFile) {
println("file: $it")
}
if (it.isDirectory) {
println("directory: $it")
}
}
}
Output:
directory: /home/js/tests/my_dir
file: /home/js/tests/my_dir/top.log
file: /home/js/tests/my_dir/t1.txt
file: /home/js/tests/my_dir/t2.txt
directory: /home/js/tests/my_dir/test2
file: /home/js/tests/my_dir/test2/t3.txt
directory: /home/js/tests/my_dir/test1
file: /home/js/tests/my_dir/test1/a1.log
file: /home/js/tests/my_dir/a1.log
file: /home/js/tests/my_dir/bb.log
2. File.walkBottomUp() : 再帰的にディレクトリのファイルリスト出力
次のように File.walkBottomUp()
を利用して、特定のルートを探索し、すべてのファイルを出力することができます。最下位のパスで最上位のパスの順序でファイルを移動します。
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walkBottomUp().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
/home/js/tests/my_dir
3. File.walkTopDown() : 再帰的にディレクトリのファイルリスト出力
次のように File.walkTopDown()
を利用して、特定のルートを探索し、すべてのファイルを出力することができます。最上位のパスで最下位のパスの順序でファイルを移動します。
import java.io.File
fun main(args: Array<String>){
File("/home/js/tests/my_dir").walkTopDown().forEach {
println(it)
}
}
Output:
/home/js/tests/my_dir
/home/js/tests/my_dir/top.log
/home/js/tests/my_dir/t1.txt
/home/js/tests/my_dir/t2.txt
/home/js/tests/my_dir/test2
/home/js/tests/my_dir/test2/t3.txt
/home/js/tests/my_dir/test1
/home/js/tests/my_dir/test1/a1.log
/home/js/tests/my_dir/a1.log
/home/js/tests/my_dir/bb.log
References
Related Posts
- Kotlin - エルビス演算子(Elvis Operation)
- Kotlin - Timer、定期的に関数を実行する
- Kotlinで正規表現を使用する
- Kotlin - 文字列の比較方法(equals、==、compareTo)
- Kotlin - 2つのList一つの併合
- Kotlin - ディレクトリのすべてのファイルのリスト出力
- Kotlin - リストの並べ替え方法(sort、sortBy、sortWith)
- Kotlin - 乱数生成(Random、SecureRandom)
- Kotlin - StringをFloatに変換
- Kotlin - Destructuring Declaration
- Kotlin - objectとclassキーワードの違い
- Kotlin - 現在の日付と時刻を取得する方法