Java 使用FileOutputStream保存文件不会创建任何文件
目前,我正在开发一个android应用程序,用户必须点击一个按钮,这会使计数增加+1。100后,另一个按钮会导致计数重置,并增加存储在另2个“整数”中的级别和难度。好吧,这一切都在工作,但我在创建保存文件时遇到了严重的问题Java 使用FileOutputStream保存文件不会创建任何文件,java,android,savestate,Java,Android,Savestate,目前,我正在开发一个android应用程序,用户必须点击一个按钮,这会使计数增加+1。100后,另一个按钮会导致计数重置,并增加存储在另2个“整数”中的级别和难度。好吧,这一切都在工作,但我在创建保存文件时遇到了严重的问题 -我通过AndroidManifest.xml -尝试了3个其他代码示例 我导入了所有必要的东西,其余的代码都正常工作 我的代码的这一部分肯定有错误: (我负责保存“统计数据”) 是否有人可以建议对代码进行改进,或者告诉我将文件保存到内部存储器时的错误?您无法刷新数据。当
AndroidManifest.xml
- 我导入了所有必要的东西,其余的代码都正常工作
是否有人可以建议对代码进行改进,或者告诉我将文件保存到内部存储器时的错误?您无法刷新数据。当您使用writer时,必须在write方法之后调用flush方法
OutputStrem stream = ... // I cannot create new reference because "OutStream" class is abstract
stream.write(data, offset, length);
stream.flush();
stream.close();
我成功地使用了BufferedWriter而不是FileOutputStream,尽管我确信它可以提供不同的设置。下面是一些带有“FileOutputStream out”的代码,我最初试图使用它,但被注释掉了
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(file,true));
//out = new FileOutputStream(file);
Log.i("file","file opened");
writer.write(someString);
//out.write(someString.getBytes());
Log.i("file","file written");
} catch (Exception e) {
Log.e("fileNotFound","file not found exception");
e.printStackTrace();
}/*
try {
out.write(someString.getBytes());
Log.i("file","file written");
Log.i("str2File",someString.getBytes().toString());
} catch (IOException e) {
Log.e("fileWrite","file write error");
e.printStackTrace();
}*/ finally {
try {
//out.getFD().sync();
//out.close();
writer.close();
Log.i("file","file closed");
} catch (Exception e) {
Log.e("closeError","error closing file");
e.printStackTrace();
}
}
logcat中有任何异常吗?抱歉,我忘了提醒我,我是应用程序编程新手,你能告诉我logcat将如何帮助我吗?openFileOutput()不需要任何清单权限,因此请删除你因此错误添加的任何内容。你们还并没有说明你们的实际问题是什么,但阅读和写作的问题几乎是一样的;如果我可以先保存int值,那么读取将更容易;至少我猜你是怎么确定没有创建“savelvl.data”的呢?该文件不容易查看。作为一般原则,如果close()不涉及隐式刷新(),我会非常惊讶-但是Android的OutputStream和FileOutputStream的文档显示FileOutputStream不会覆盖do nothing flush())它继承自OutputStream。你是对的,我错了。我使用混合缓冲机制。
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(file,true));
//out = new FileOutputStream(file);
Log.i("file","file opened");
writer.write(someString);
//out.write(someString.getBytes());
Log.i("file","file written");
} catch (Exception e) {
Log.e("fileNotFound","file not found exception");
e.printStackTrace();
}/*
try {
out.write(someString.getBytes());
Log.i("file","file written");
Log.i("str2File",someString.getBytes().toString());
} catch (IOException e) {
Log.e("fileWrite","file write error");
e.printStackTrace();
}*/ finally {
try {
//out.getFD().sync();
//out.close();
writer.close();
Log.i("file","file closed");
} catch (Exception e) {
Log.e("closeError","error closing file");
e.printStackTrace();
}
}