Android File

あるディレクトリ以下のファイルすべての削除

val file = File(context.filesDir, "picture/%d".format(newKiroku.id))
file.deleteRecursively()

ファイルからBitmapの読み出し

fun getPicture(id: Int, imageNumber: Int): Bitmap? {
    val filename = "picture/%d/%d".format(id, imageNumber)
    val bitmap: Bitmap? = BitmapFactory.decodeFile(File(context.filesDir, filename).toString())
    return bitmap
}

Uriからファイルを読んで、中身をそのままコピー

(Jpeg圧縮に変更したほうが良いかもしれない)

fun onPictureSelected(imageUri: Uri, imageNumber: Int) {
    val inputStream = context.contentResolver.openInputStream(imageUri)
    //val inputFile = File(imageUri)
    //val inputStream = inputFile.inputStream()

    val pictureDirectory = File(context.filesDir,"picture/%d".format(kirokuEditting.value.id))
    pictureDirectory.mkdirs()
    val filename = "picture/%d/%d".format(kirokuEditting.value.id,imageNumber)
    val outputFile = File(context.filesDir, filename)

    //val outputFile = File(pictureDirectory, filename)
    val outputStream = outputFile.outputStream()

    println("copy $imageUri to $outputFile")

    inputStream?.copyTo(outputStream)
}

https://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html

リネーム #

.renameTo

親ディレクトリの取得 #

file.getParentFile()

ディレクトリの作成 #

file.getParentFile().mkdirs()