Попытка загрузить файл в основное действие onCreate

То, что я пытаюсь сделать, это проверить, существует ли файл turma.dat уже существует, если он существует, я просто открываю его, если он не существует, я создаю новый файл и сохраняю его. Когда я запускаю приложение при первом создании файла, но каждый раз, когда я его запускаю, файл создается белым цветом.

Основная деятельность:

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val toolbar = findViewById(R.id.toolbar) as Toolbar setSupportActionBar(toolbar) var turma : Turma var file = File("turma.dat") if(file.exists()) { turma = this.abrirArquivo() }else{ turma = Turma() ArquivoUtils(turma, this.applicationContext) } 

Метод abrirArquivo:

 @Throws(IOException::class, ClassNotFoundException::class) fun abrirArquivo(): Turma { val fis = this.applicationContext.openFileInput("turma.dat") val ois = ObjectInputStream(fis) return ois.readObject() as Turma } 

Класс ArquivoUtils: (Ответственный за получение объекта Turma в файл и сохранение)

 class ArquivoUtils internal constructor( var turminha: Turma, var context : Context) { internal val fos = this.context.openFileOutput("turma.dat", Context.MODE_PRIVATE) internal val oos = ObjectOutputStream(fos) init { this.salvarArquivo() this.closeFile() } @Throws(IOException::class) private fun salvarArquivo() { oos.writeObject(turminha) this.closeFile() } @Throws(IOException::class) fun closeFile() { oos.close() } 

file.exists() не ищет, где вы ожидаете. Методы openFileInput и openFileOutput работают с файлами в приватном месте приложения. Когда вы объявляете файл, вы говорите …

 var file = File("turma.dat") 

Вместо этого используйте что-то вроде …

 var file = File(this.filesDir, "turma.dat") 

Посмотрите, поможет ли это. Читайте Сохранение файлов, чтобы лучше понять, как работать с файлами в Androidl

Кстати, используйте отладчик и file.exists и убедитесь, что file.exists возвращает то, что вы ожидаете. (Если вы не знаете, как использовать отладчик, начните с изучения).

Intereting Posts
Android – Check for Not Null не работает как ожидается Динамические столбцы таблицы Spring Security несколько успешных поставщиков аутентификации Kotlin – переопределить / реализовать функцию доступа к массиву Ошибка приложения из-за того, что экземпляр экземпляра lateinit не инициализирован Передача и использование функции в качестве аргумента конструктора в Котлине Я не могу найти метод populateViewHolder в классе FirebaseRecyclerAdapter Ошибка «нет основного манифеста» в intellij при выполнении jar Являются ли методы расширения и свойства расширения плохой практикой? Переименование каталога «java» в «kotlin» в Android Studio Возможно ли реализовать индивидуальное деструктурирование для не-класса данных в Котлин? Создать новый экземпляр объекта Котлин Котлин, проблема гонки Kotlin: Видимость статического вложенного класса Java, объявленного внутри невидимого класса Kotlin null-safety для свойств класса