私はまだkotlinとandroid studioの初心者です。 私はほとんどのアンドロイドウィジェットにアクセスできますが、私はファイルにアクセスすることができず、今まで私はうまく動作しない次のコードだけを見つけることができました。アプリがクラッシュする...kotlinのアンドロイドでtxtファイルを読み書きする方法
特定の場所にファイルを作成する方法もわかっていれば幸いです。ルートディレクトリや内部ストレージ、または内部ストレージのファイルに似ています。 ありがとう...
私はまだkotlinとandroid studioの初心者です。 私はほとんどのアンドロイドウィジェットにアクセスできますが、私はファイルにアクセスすることができず、今まで私はうまく動作しない次のコードだけを見つけることができました。アプリがクラッシュする...kotlinのアンドロイドでtxtファイルを読み書きする方法
特定の場所にファイルを作成する方法もわかっていれば幸いです。ルートディレクトリや内部ストレージ、または内部ストレージのファイルに似ています。 ありがとう...
私はちょうどTpoM6oHの答えに追加したいです。ファイルで作業する場合、あなたが意図したファイル操作で100%成功するとは限りません。したがって、filenotfoundexceptionなどの例外を試して捕捉し、プログラム制御の流れに細心の注意を払う方が良い方法です。外部ストレージにファイルを作成するには
、あなたは
Environment.getExternalStorageDirectory()
を使用して場所を取得し、場所が存在するかどうかを確認することができます。そうでない場合は、1を作成し、Kotlin
val sd_main = File(Environment.getExternalStorageDirectory()+"/yourlocation")
var success = true
if (!sd_main.exists()) {
success = sd_main.mkdir()
}
if (success) {
val sd = File("filename.txt")
if (!sd.exists()) {
success = sd.mkdir()
}
if (success) {
// directory exists or already created
val dest = File(sd, file_name)
try {
PrintWriter(dest).use { out -> out.println(response) }
} catch (e: Exception) {
// handle the exception
}
} else {
// directory creation is not successful
}
}
を使用してファイルを作成して書き込みを続行この情報がお役に立てば幸いです。
ファイルには、内部または外部のストレージディレクトリを使用する必要があります。
内部:
val path = context.getFilesDir()
外部:
val path = context.getExternalFilesDir(null)
あなたがマニフェストに権限を追加する必要があります外部ストレージを使用する場合:作成
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
あなたディレクトリ:
val letDirectory = File(path, "LET")
letDirectory.mkdirs()
次に、あなたのファイルを作成します。
val file = File(letDirectory, "Records.txt")
次に、あなたがそれに書き込むことができます。
FileOutputStream(file).use {
it.write("record goes here".getBytes())
}
か、単に
file.appendText("record goes here")
をまた読んで:
val inputAsString = FileInputStream(file).bufferedReader().use { it.readText() }
これは私のために働く私の完全なアクティビティコード..です
package com.coding180.project016
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import java.io.BufferedReader
import java.io.IOException
import java.io .InputStreamReader
import android.widget.Toast
import android.app.Activity
import java.io.OutputStreamWriter
class MainActivity: AppCompatActivity() {
override fun onCreate (savedInstanceState: Bundle?) {
super.onCreate (savedInstanceState)
setContentView (R.layout.activity_main)
val et1 = findViewById (R.id.et1) as EditText
if(fileList().contains("notes.txt")) {
try {
val file = InputStreamReader(openFileInput("notes.txt"))
val br = BufferedReader(file)
var line = br.readLine()
val all = StringBuilder()
while (line != null) {
all.append(line + "\n")
line = br.readLine()
}
br.close()
file.close()
et1.setText(all)
}
catch (e:IOException) {
}
}
val button1 = findViewById (R.id.button1) as Button
button1.setOnClickListener {
try {
val file = OutputStreamWriter(openFileOutput("notes.txt", Activity.MODE_PRIVATE))
file.write (et1.text.toString())
file.flush()
file.close()
} catch (e : IOException) {
}
Toast.makeText(this, "data were recorded", Toast.LENGTH_SHORT).show()
finish()
}
}
}
完全なコード:私はあなたが.mkdirs()の呼び出しを使用するために持っていると思うhttps://coding180.com/kotlin-android/storing-data-in-a-text-file-in-the-internal-memory/
"/ LET"がまだ存在しない場合もあります。また、書き込みのために、彼は単にファイルを使用することができます。appendText(最終的にあなたが書いたものに似ていますが、appendTextが文字セットをUTF8に設定する点が異なります) – Les
context.getFilesDir()で未解決の参照 – Khayyam
'android.content.Context'を使用していますか? – TpoM6oH