java-保存在getFilesDir()中的文件在应用重启时丢失
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-保存在getFilesDir()中的文件在应用重启时丢失,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1860字,纯文字阅读大概需要3分钟。
内容图文
我是android编程的新手,所以希望我的问题的答案很简单.
我有一个可以从通过网络连接的PC程序接收文件的应用程序.然后,此文件在内部存储并由应用程序使用.当应用启动时,它将读取文件(这是类’WordList’的序列化实例,该类基本上是HashMap),并向其显示数据.在任何时候,pc程序都可以将新文件发送到android设备,后者会接收该文件并覆盖内存中的旧文件.
像这样接收和存储文件:
try(ServerSocket serverSocket = new ServerSocket(port)){
Socket pc = serverSocket.accept();
ObjectInputStream ois = new ObjectInputStream(pc.getInputStream());
list = (WordList)ois.readObject();
ois.close();
pc.close();
}catch(IOException | ClassNotFoundException e){
//Display error message and stuff
}
try {
ObjectOutputStream oos = new ObjectOutputStream(
openFileOutput("save.dat", Context.MODE_PRIVATE));
oos.writeObject(list);
oos.flush();
oos.close();
} catch (IOException e) {
//Display error message and stuff
}
当应用启动时,它会像这样读取文件:
if (new File(getFilesDir() + "save.dat").exists()) {
try {
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(getFilesDir() + "save.dat"));
WordList list = (WordList)ois.readObject();
/*Now set a reference to the list object so it can be used by the app,
then start displaying stuff to the user...*/
ModelController.getInstance().setList(list);
ModelController.getInstance().start(this);
}catch(IOException | ClassNotFoundException e){
//Display error message and stuff
}
}else{
//Display error message and stuff
}
问题在于应用程序启动时找不到文件.如果我从PC发送新文件,则可以正确接收和使用它,而不会出现错误消息.但是,如果我重新启动该应用程序,但找不到该应用程序,则会从最后一个代码块的“ else”部分收到错误消息.我忘记了什么?
解决方法:
new File(getFilesDir() + "save.dat")
应该
new File(getFilesDir(), "save.dat")
最后一个在getFilesDir()的返回值和“ save.dat”之间附加文件分隔符
而不是使用
new FileInputStream(getFilesDir() + "save.dat")
我们
openFileInput("save.dat")
here您可以找到文档
内容总结
以上是互联网集市为您收集整理的java-保存在getFilesDir()中的文件在应用重启时丢失全部内容,希望文章能够帮你解决java-保存在getFilesDir()中的文件在应用重启时丢失所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。