Java/Android: 字节到文件没有保存?

Java/Android: Byte to file not saving?

我想知道这段代码有什么问题:

public class MainActivity extends ActionBarActivity {
  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = (TextView) findViewById(R.id.textview);
        start();
    }
 public void start(){
        File file = new File("file.file");   
        try{

            FileOutputStream fos;
            fos = openFileOutput("file.file", Context.MODE_PRIVATE);
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            if(file.length() == 0){
                BigInteger bi = new BigInteger("1000");
                bos.write(bi.toByteArray());
                bos.flush();
                bos.close();
                textView.setText(""+file.length()); //This is always 0, why? 
            }
            else{
             //do stuff, but since file.length() is always 0, this never happens. 
            }


}

所以基本上我想检查文件是否为空,如果为空则向其中添加内容。所以我期望的是,当我下次打开应用程序时,长度不应该为空,因为我之前已经写入了它。但是,文件的长度始终为0,这是为什么呢? File.length() 表示 returns 字节数。

我在第一次探索 Android 开发时遇到了类似的问题。尝试像这样创建文件:

File f = new File(context.getFilesDir(), "file.file");

其中 context 是您应用的当前 android.content.Context。

编辑:

File f = new File(this.getFilesDir(), "file.file");

...因为 ActionBarActivity 扩展了 Activity,这是一个上下文。我有一段时间没有开发 Android,但显然 。查看 post 以获取更多信息。

您需要在打开文件之前检查是否为空。打开输出文件会创建一个新的零长度文件,除非您指定 'append' 模式。