尝试将文件加载到主活动的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()是probalby不看你期望的地方。 方法openFileInputopenFileOutput处理应用程序私有位置中的文件。 当你声明文件你说…

 var file = File("turma.dat") 

而是使用像…

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

看看是否有帮助。 阅读保存文件 ,以更好地掌握如何在Androidl中处理文件

顺便说一下,使用一个调试器,并通过并验证file.exists返回您所期望的。 (如果你不知道如何使用调试器,那就从学习开始)。