Closed8

Android で 指定ディレクトリにファイル作成

tkttkt

/storage/emulated/0/Android/data/<プロジェクト>/files/<なんか>/example.txt
このあたりにつくりたい

tkttkt

これでいけるか、

private fun setFile() {
    val filename = "/path/example.txt"
    val fileContents = "text"
    context.openFileOutput(filename, Context.MODE_PRIVATE).use {
        it.write(fileContents.toByteArray())
    }
}

だめだった

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: プロジェクト, PID: 1795
    java.lang.RuntimeException: Unable to start activity ComponentInfo{プロジェクト/プロジェクト.MainActivity}: java.lang.IllegalArgumentException: File /path/example.txt contains a path separator
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2671)
tkttkt
private fun setFile() {
    val path = File(context.getExternalFilesDir(null),"path")
    path.mkdirs()
    val filename = "example.txt"
    val filepath = File(path,filename)
    val writer = BufferedWriter(FileWriter(filepath))
    val fileContents = "any contents"
    try {
        writer.write(fileContents)
        writer.close()
    } catch (e: Exception) {
        Log.e("setFile", "setFile: Catched!!")
    }
}

通った

tkttkt

参考: https://www.it-swarm-ja.tech/ja/android/androidの独自の内部フォルダーに内部ファイルを保存します/972978013/

  1. 目的のディレクトリにFileを作成します(例:File path=new File(getFilesDir(),"myfolder");)
  2. Fileでmkdirs()を呼び出して、ディレクトリが存在しない場合は作成します
  3. 出力ファイル用にFileを作成します(例:File mypath=new File(path,"myfile.txt");)
  4. standard Java I/O を使用してFileに書き込みます(たとえば、new BufferedWriter(new FileWriter(mypath)))
このスクラップは2021/01/01にクローズされました