我是 Android 开发新手,正在处理我的第一个 Android 项目,并面临 .txt 文件处理。 我在Android模拟器上成功创建了一个txt文件,该文件存储在:/storage/emulated/0/Android/data/com.example.test/files/test.txt
我的问题是,我不知道如何用代码测试这个文件是否存在。我写了下面几行,这是我在互联网上找到的:
fun checkIfFileExists() {
val fileName2 = "test.txt"
var file = File(filesDir, fileName2)
var fileExists = file.exists()
if(fileExists) {
println("File exists")
}
else {
println("File doesn't exists")
}
}
文件保存功能:
btnSave.setOnClickListener(View.OnClickListener {
val file:String = fileName.text.toString()
val data:String = fileData.text.toString()
val fileOutputStream:FileOutputStream
try {
fileOutputStream = openFileOutput(file, Context.MODE_PRIVATE)
fileOutputStream.write(data.toByteArray())
}catch (e: FileNotFoundException){
e.printStackTrace()
}catch (e: NumberFormatException){
e.printStackTrace()
}catch (e: IOException){
e.printStackTrace()
}catch (e: Exception){
e.printStackTrace()
}
Toast.makeText(applicationContext,"data save",Toast.LENGTH_LONG).show()
fileName.text.clear()
fileData.text.clear()
})
但它总是打印“文件不存在”,尽管我检查了自己并且文件存在。
希望有人知道我做错了什么。
你实例化了文件,只有文件名,没有路径,那么它怎么知道去哪里查找呢?在 Android 上,您不想使用绝对路径,而是使用 Context 为您提供的路径。
不确定您如何创建原始文件,但假设它已保存到内部存储,您会执行此操作(
getFilesDir()
是一个上下文方法,因此如果从活动调用则可用):
var file = File(getFilesDir().getAbsolutePath(), fileName2)
如果您的包名为 com.example.app,则 _context.filesDir.path 为“/data/data/com.example.app/files”。然后你可以编写这段代码来知道你的文件是否存在。
var myfile = File(_context.filesDir.path,"myfilename.txt")
if(myfile.exists())
Log.e("File exists")
else
Log.e("File does not exist")
如果您有子目录,您可以编写此代码而不是第一行:
var myfile = File(_context.filesDir.path+"/{your sub directory 1}/{your another sub directory 2}","myfilename.txt")