タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【kotlin】内部ストレージのファイル入出力。File.appendText()、File.readLines()

2024-08-26 20:37:06 | Android studio 日記

Preferenceで文字列リストを保存している。
理由は分からないがアプリが強制終了。再現性は無し。本当に原因が分からない。

そして、再起動後にPreferenceは消えて無くなった。
なので、手動でリスト内容を内部ストレージに保存する項目を追加。

内部ストレージに入出力する方法はたくさんあるが設定が良くないのか多くがエラー(笑)
単純な方法でテキストの書き込み読み出しを実行。

    private fun write() {
        // 文字列配列から書き込み。改行を付け加える
       
        val lists = ArrayList< String >(出力データ)
        var file = requireContext().filesDir // アプリ固有内部ストレージ

        file = File(file,"appData/list.txt") // filesDir + "appData/list.txt" 出力場所、出力ファイル名
        if (file.exists())
            file.delete() // 存在してたら削除
        else {
            val f = file.parentFile
            if (f!!.exists()==false)
                f.mkdir() // appDataディレクトリが無ければ作る
        }

        try {
            file.createNewFile() // 新規作成。list.txtファイルが存在していて実行するとエラー
            for (i in lists.indices) {
                file.appendText(lists[i] + "\r\n") // 改行を付けて追加書き込み。\は半角バックスラッシュ
            }
        } catch ( e:Exception ) {
            // エラー全部受け取り
        }
    }

    private fun read() {
        var file = requireContext().filesDir
        file = File(file,"appData/list.txt")
        if (file.exists()==false)
            return

        val lists: List< String > = file.readLines() // 一行分を1要素にして配列を作ってくれる
        if (lists.size<=0)
            return

        // 作った文字列配列を処理する
    }


アプリのバグ出し修正、デザイン変更等々、気長に考える。
アプリの内部ストレージのファイルアクセスは権限はいらないみたい。

ファイルの書き込み読み出しは問題なさそう。