代码之家  ›  专栏  ›  技术社区  ›  Jayne

写入Android目录中的文件(Kotlin)

  •  0
  • Jayne  · 技术社区  · 3 年前

    我有一个json字符串,我想写到内部存储中的一个文件中,因为它将作为应用程序的保存文件。由于会有几个文件,我希望所有文件都在一个名为savefiles的目录中,如果找不到,也应该创建该目录。我尝试使用OutputStreamWriter来实现这一点,首先我生成文件的路径,然后尝试写入它。以下是代码:

            try {
                val path = "savefiles/${SimpleDateFormat("yyyyMMddHHmmss").format(Date())}.json"
                val outputStreamWriter = OutputStreamWriter(openFileOutput(path, Context.MODE_PRIVATE))
                outputStreamWriter.write(myJson.toString())
                outputStreamWriter.close()
            } catch (e: IOException) {
                Log.e("Exception", "File write failed: $e")
            }
    

    然而,这给了我一个错误: java.lang.IllegalArgumentException: File /savefiles/20230708174147.json contains a path separator

    我已经明白了,我不应该在路径字符串中包含目录的名称,但一直找不到解决方法。

    1 回复  |  直到 3 年前
        1
  •  1
  •   Md. Kabir Hassan    3 年前

    要创建一个目录并在其中写入文件,请使用 Kotlin ,您可以按照以下步骤操作:

    以下是包含上述步骤的完整代码片段:

    val directory = File(context.filesDir, "savefiles")
    if (!directory.exists()) {
        directory.mkdirs()
    }
    
    val fileName = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()).format(Date()) + ".json"
    val file = File(directory, fileName)
    
    try {
        val outputStream = FileOutputStream(file)
        outputStream.write(myJson.toString().toByteArray())
        outputStream.close()
    } catch (e: IOException) {
        Log.e("Exception", "File write failed: $e")
    }
    
    推荐文章