Привет, я попытался создать файл с помощью FileWriter, следуя этому руководству

https://medium.com/@ssaurel/parse-and-write-json-data-in-java-with-gson-dd8d1285b28

Но я всегда получаю

   not fn

Как только я открываю logcat, что означает, что файл никогда не создается.

Я не понял в чем дело.

Вот мой код

fun writeJson()
{
    val item1 = InterItem(1, DateT(2018, Calendar.FEBRUARY, 6).date, "Dina", "type1")
    val  item2 = InterItem(2, DateT(2018, Calendar.MARCH, 8).date, "Lili", "type2")
    val item3= InterItem(3, DateT(2018, Calendar.MAY, 10).date, "Wassim", "type3")
    val res =  ListInter()
    res.list= arrayListOf( item1, item2, item3)
    val gson = GsonBuilder().setPrettyPrinting().create()
    val strJson = gson.toJson(res)
    var writer: FileWriter? = null
    try {
        writer = FileWriter("data.json")
        writer.write(strJson)
    } catch (e: IOException) {
        e.printStackTrace()
        Log.e("errr","not fn")
    } finally {
        if (writer != null) {
            try {
                writer.close()
            } catch (e: IOException) {
                e.printStackTrace()
                Log.e("errr","not close")
            }

        }
    }
}
1
DINA TAKLIT 12 Май 2018 в 21:29

1 ответ

Лучший ответ

Измените код на этот:

    try {
        val writer = FileWriter(File(this.filesDir, "data.json"))
        writer.use { it.write(strJson) }

    } catch (e : IOException){
        Log.e("errr","not fn", e)
    }

Должен решить вопрос. Вы должны указать каталог, в который вы хотите поместить файл. Также вы можете использовать writer.use { it.write(strJson)} как FileWriter реализует Closeable - это обрабатывает закрытие модуля записи независимо от исключения.

7
Brad Larson 30 Ноя 2018 в 16:47