提问人:VFarkas2023 提问时间:2/12/2023 最后编辑:VFarkas2023 更新时间:2/13/2023 访问量:102
Kotlin 中无法访问 txt 文件
No file access for txt file in Kotlin
问:
我试图将文本文件保存到应用程序的内部存储中,但它不起作用
代码是
val defFileName = "text.def"
val ioFile = File(defFileName)
ioFile.createnewFile()
ioFile.writeText("Hello World")
我尝试了不同的代码版本来实现它,但每次我都得到
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.io.FileNotFoundException: hello_file: open failed: EROFS (Read-only file system)
EROFS ReadOnlyFileSystem
有什么帮助吗?
编辑:
我得到路径
mContext.applicationInfo.dataDir.toString()
此代码运行没有错误,ioDefFile =“xxx.def”
val fileOutputStream:FileOutputStream
try {
fileOutputStream = context.openFileOutput(ioDefFile, Context.MODE_PRIVATE)
fileOutputStream.write("just a textString".toByteArray())
}catch (e: Exception){
e.printStackTrace()
}
此代码显示 -> open failed: EROFS(只读文件系统)
try{
val fileWriter = FileWriter(ioDefFile)
for (x in 0..(DSSize-1)){
fileWriter.write(dl[x]+ "\n")
}
fileWriter.close()
} catch (exception: Exception){
println(exception.message)
}
在代码 2 中没有看到错误 - 如果不添加路径,它不适用于 oder
答:
0赞
Dilshad
2/12/2023
#1
从提供的代码中,您正在尝试创建一个文件并写入它。
如前所述,该变量不会提供有效的路径defFileName
所以你需要把你的代码修改成这样的东西,以获得结果
val defFileName = "text.def"
val ioFile = File(context.getExternalFilesDir(
Environment.DIRECTORY_DOCUMENTS),
"name.txt")
ioFile.writeText("hello")
0赞
VFarkas2023
2/13/2023
#2
现在它:)工作
val foStream: FileOutputStream
try {
foStream = context.openFileOutput(ioDefFile, Context.MODE_PRIVATE)
for (x in 0..(DSSize - 1)) {
foStream.bufferedWriter().write(dl[x])
foStream.bufferedWriter().newLine()
}
} catch (e: Exception) {
e.printStackTrace()
}
评论
"text.def"
不是有效的文件系统路径。