使用 Kotlin 检查 Android 设备上是否存在文件

问题描述 投票:0回答:2

我是 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()
    })

但它总是打印“文件不存在”,尽管我检查了自己并且文件存在。

希望有人知道我做错了什么。

file android-studio kotlin
2个回答
2
投票

你实例化了文件,只有文件名,没有路径,那么它怎么知道去哪里查找呢?在 Android 上,您不想使用绝对路径,而是使用 Context 为您提供的路径。

不确定您如何创建原始文件,但假设它已保存到内部存储,您会执行此操作(

getFilesDir()
是一个上下文方法,因此如果从活动调用则可用):

var file = File(getFilesDir().getAbsolutePath(), fileName2)

0
投票

如果您的包名为 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")
© www.soinside.com 2019 - 2024. All rights reserved.