尝试将文件加载到主活动的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不看你期望的地方。 方法openFileInput
和openFileOutput
处理应用程序私有位置中的文件。 当你声明文件你说…
var file = File("turma.dat")
而是使用像…
var file = File(this.filesDir, "turma.dat")
看看是否有帮助。 阅读保存文件 ,以更好地掌握如何在Androidl中处理文件
顺便说一下,使用一个调试器,并通过并验证file.exists
返回您所期望的。 (如果你不知道如何使用调试器,那就从学习开始)。