Java 使用FileOutputStream保存文件不会创建任何文件

Java 使用FileOutputStream保存文件不会创建任何文件,java,android,savestate,Java,Android,Savestate,目前,我正在开发一个android应用程序,用户必须点击一个按钮,这会使计数增加+1。100后,另一个按钮会导致计数重置,并增加存储在另2个“整数”中的级别和难度。好吧,这一切都在工作,但我在创建保存文件时遇到了严重的问题 -我通过AndroidManifest.xml -尝试了3个其他代码示例 我导入了所有必要的东西,其余的代码都正常工作 我的代码的这一部分肯定有错误: (我负责保存“统计数据”) 是否有人可以建议对代码进行改进,或者告诉我将文件保存到内部存储器时的错误?您无法刷新数据。当

目前,我正在开发一个android应用程序,用户必须点击一个按钮,这会使计数增加+1。100后,另一个按钮会导致计数重置,并增加存储在另2个“整数”中的级别和难度。好吧,这一切都在工作,但我在创建保存文件时遇到了严重的问题

  • -我通过
    AndroidManifest.xml
  • -尝试了3个其他代码示例
    • 我导入了所有必要的东西,其余的代码都正常工作
  • 我的代码的这一部分肯定有错误:

    (我负责保存“统计数据”)


    是否有人可以建议对代码进行改进,或者告诉我将文件保存到内部存储器时的错误?

    您无法刷新数据。当您使用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();
                }
            }