Kotlinのフォルダを操作するサンプルです。
目次
サンプル | フォルダの存在確認(exists/notExists) |
フォルダをコピーする(copy) | |
フォルダを移動する(move) | |
フォルダ名を変更する(move) | |
空フォルダを作成する(createDirectory) | |
フォルダを削除する(deleteIfExists) | |
作成日時と更新日時を取得(readAttributes) |
フォルダの存在確認(exists/notExists)
public static boolean exists(Path path,LinkOption... options) |
public static boolean notExists(Path path,LinkOption... options) |
existsメソッドとnotExistsメソッドで、フォルダの存在確認を行うサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
fun main() {
val path1 = Paths.get("D:\\Test3\\sub1")
if (Files.exists(path1)) {
println("存在します")
}
if (Files.notExists(path1)) {
println("存在しません")
}
}
7行目のexistsメソッドは、フォルダが存在している場合、trueを返します。
存在していない場合、falseを返します。
10行目のnotExistsメソッドは、フォルダが存在していない場合、trueを返します。
存在している場合、falseを返します。
フォルダをコピーする(copy)
public static Path copy(Path source,Path target,CopyOption... options) throws IOException |
copyメソッドで、フォルダをコピーするサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
fun main() {
val from1 = Paths.get("D:\\Test3\\sub1")
val to1 = Paths.get("D:\\Test4\\sub1")
try {
Files.copy(from1, to1)
} catch (e: IOException) {
e.printStackTrace()
}
}
10行目は、Test3フォルダ配下のsub1フォルダをTest4フォルダ配下にコピーします。
コピー前に、D:\Test4\sub1が存在しているとエラーになります。
フォルダの中のフォルダとファイルはコピーされません。
フォルダを移動する(move)
public static Path move(Path source,Path target,CopyOption... options)throws IOException |
moveメソッドで、フォルダを移動するサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
fun main() {
val from1 = Paths.get("D:\\Test3\\sub1")
val to1 = Paths.get("D:\\Test4\\sub1")
try {
Files.move(from1, to1)
} catch (e: IOException) {
e.printStackTrace()
}
}
10行目は、Test3フォルダ配下のsub1フォルダをTest4フォルダ配下に移動します。
移動前に、D:\Test4\sub1が存在しているとエラーになります。
フォルダの中のフォルダとファイルも移動します。
フォルダ名を変更する(move)
public static Path move(Path source,Path target,CopyOption... options)throws IOException |
moveメソッドで、フォルダ名を変更するサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
fun main() {
val from1 = Paths.get("D:\\Test3\\sub1")
val to1 = Paths.get("D:\\Test3\\sub7")
try {
Files.move(from1, to1)
} catch (e: IOException) {
e.printStackTrace()
}
}
10行目は、Test3フォルダ配下のsub1フォルダをsub7というフォルダ名に変更しています。
空フォルダを作成する(createDirectory)
public static Path createDirectory(Path dir,FileAttribute<?>... attrs)throws IOException |
createDirectoryで、空フォルダを作成するサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
fun main() {
val path1 = Paths.get("D:\\Test3\\sub2")
try {
if (!Files.isDirectory(path1)) {
Files.createDirectory(path1)
}
} catch (e: IOException) {
e.printStackTrace()
}
}
9行目は、isDirectoryメソッドと否定(!)で指定のフォルダが存在していないことを確認しています。
10行目は、createDirectoryメソッドで指定のフォルダを作成しています。
フォルダを削除する(deleteIfExists)
public static boolean deleteIfExists(Path path) throws IOException |
deleteIfExistsメソッドで、フォルダを削除するサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
fun main() {
val path1 = Paths.get("D:\\Test3\\sub2")
try {
Files.deleteIfExists(path1)
} catch (e: IOException) {
e.printStackTrace()
}
}
9行目は、deleteIfExistsメソッドで指定のフォルダが存在しているか確認し、フォルダが存在するとき削除処理を行います。
フォルダの中にファイルが存在した場合、フォルダを削除できません。
java.nio.file.DirectoryNotEmptyExceptionの例外が発生します。
作成日時と更新日時を取得する(readAttributes)
public static <A extends BasicFileAttributes> A readAttributes(Path path,Class<A> type,LinkOption... options)throws IOException |
readAttributesメソッドで、作成日時と更新日時を取得するサンプルです。
import java.nio.file.Files
import java.nio.file.Paths
import java.io.IOException
import java.nio.file.attribute.BasicFileAttributes
import java.util.Date;
import java.text.SimpleDateFormat
fun main() {
val path1 = Paths.get("D:\\Test3\\sub1")
val ba1: BasicFileAttributes
try {
ba1 = Files.readAttributes(path1, BasicFileAttributes::class.java)
println(ba1.creationTime()) //2021-03-07T12:10:31.802689Z
println(ba1.lastModifiedTime()) //2021-03-10T16:13:10.064732Z
getFormat1(ba1)
} catch (e: IOException) {
e.printStackTrace()
}
}
private fun getFormat1(ba1: BasicFileAttributes) {
val time1 = ba1.creationTime()
val time2 = ba1.lastModifiedTime()
val pattern1 = "yyyy-MM-dd HH:mm:ss"
val format1 = SimpleDateFormat(pattern1)
val f1 = format1.format(Date(time1.toMillis()))
val f2 = format1.format(Date(time2.toMillis()))
println("作成日時 $f1") //作成日時 2021-03-07 21:10:31
println("更新日時 $f2") //更新日時 2021-03-11 01:13:10
}
9行目は、対象のフォルダです。
13行目は、FilesクラスのreadAttributesメソッドでファイルの属性を読み取ります。
14行目は、作成日時ですがフォーマットされていない状態です。
15行目も、更新日時ですがフォーマットされていない状態です。
21~30行目は、SimpleDateFormatクラスを使用してyyyy-MM-dd HH:mm:ssで表示されるようにしています。
関連の記事