我在Kotlin和Android Studio方面仍然是一个初学者。我可以访问大多数Android小部件,但我无法访问文件,到目前为止我只发现了以下代码,它不起作用。应用程序崩溃...
var recordsFile = File("/LET/Records.txt")
recordsFile.appendText("record goes here")
如果我也能知道如何在特定位置创建文件,比如在根目录、内部存储器或内部存储器中的一个文件中,我将不胜感激。 谢谢。
您需要使用内部或外部存储目录来存储文件。
内部存储:
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() }
Kotlin让文件的读写变得非常简单。
如果要读写内部存储器:
context.openFileOutput(filename, Context.MODE_PRIVATE).use {
it.write(message.toByteArray())
}
.
.
.
val file = File(context.filesDir, "myfile.txt")
val contents = file.readText() // Read file
用于读写 外部 存储器:
val file = File(Environment.getExternalStorageDirectory()+"/path/to/myfile.txt")
file.writeText("This will be written to the file!")
.
.
.
val contents = file.readText() // Read file
Environment.getExternalStorageDirectory()
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 {
// response is the data written to file
PrintWriter(dest).use { out -> out.println(response) }
} catch (e: Exception) {
// handle the exception
}
}
} else {
// directory creation is not successful
}
response
是什么?你要写入文件的字符串吗? - Branson Camp5步操作:若内部目录不存在,则创建文件,写入内容至文件,读取文件。
val file = File(ctx.filesDir, FILE_NAME)
file.createNewFile()
file.appendText("record goes here")
val readResult = FileInputStream(file).bufferedReader().use { it.readText() }
println("readResult=$readResult")
fun loadWords(context: Context): ArrayList<String> {
val Word = ArrayList<String>()
var line: String
var word = ""
var weight = 0
try {
val reader: BufferedReader
val file = context.assets.open("spam_keywords.txt")
reader = BufferedReader(InputStreamReader(file))
while ((reader.readLine()) != null) {
line = reader.readLine()
val st = StringTokenizer(line)
while (st.hasMoreElements()) {
word = st.nextElement().toString()
}
Word.add(word)
}
} catch (e: Exception) {
e.printStackTrace()
}
println(Word)
return Word
}
android.content.Context
吗? - TpoM6oHgetFilesDir()
方法,否则您需要获取一个上下文对象。在片段中,您可以调用getContext().getFilesDir()
方法。 - TpoM6oH