我正在尝试做的是测试文件“turma.dat”是否已经存在,如果它存在我只是打开它,如果它不存在,我创建一个新文件并保存它。当我第一次创建文件时启动应用程序,但每次重新启动时,文件都以白色创建。
MainActivity:
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()
}
答案 0 :(得分:2)
file.exists()
是probalby不看你期望的地方。方法openFileInput
和openFileOutput
处理应用程序私有位置中的文件。当你声明文件时,你说...
var file = File("turma.dat")
取而代之的是......
var file = File(this.filesDir, "turma.dat")
看看是否有帮助。阅读Saving Files以更好地掌握如何使用Androidl中的文件
顺便说一句,使用调试器并逐步执行并验证file.exists
是否返回您期望的内容。 (如果你不知道如何使用调试器,那么首先要学习如何)。