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

时间:2014-03-21 21:19:00

标签: java android savestate

目前我正在开发一个Android应用程序,用户必须点击一个按钮才能为计数添加+1。在100之后,存在另一个按钮,该按钮导致计数的重置并且增加存储在另外2“整数”中的水平和难度。好吧一切正常,但我在创建保存文件时遇到了很大问题。

  1. - 我通过AndroidManifest.xml
  2. 给了我许可
  3. - 试了3个其他代码示例
    • 我确实导入了所有必要的内容,其余的代码正在运行
  4. 我的代码的这一部分必须有一个错误:

    (我保存“统计数据”的部分)

    save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
    
                try {
                    FileOutputStream savelvl = openFileOutput("savelvl.data", Context.MODE_PRIVATE);
                    savelvl.write(level);
                    savelvl.close();
    
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
    
            }
        });
    

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

2 个答案:

答案 0 :(得分:0)

您无法刷新数据。使用writer时,必须在write方法后调用flush方法。

OutputStrem stream = ... // I cannot create new reference because "OutStream" class is abstract
stream.write(data, offset, length);
stream.flush();
stream.close();

答案 1 :(得分:0)

我使用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();
            }
        }