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

Java/Android:字节到文件不保存?,java,android,file,fileoutputstream,Java,Android,File,Fileoutputstream,我想知道这个代码有什么问题: public class MainActivity extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) fin

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

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()表示返回字节数

我在第一次探索Android开发时遇到了类似的问题。尝试按以下方式创建文件:

File f = new File(context.getFilesDir(), "file.file");
其中
context
是您的应用程序当前的android.content.context

编辑:

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

…因为ActionBarActivity扩展了活动,这是一个上下文。我已经有一段时间没有为Android开发了,但是很明显。查看那篇文章以了解更多信息

我在第一次探索Android开发时遇到了类似的问题。尝试按以下方式创建文件:

File f = new File(context.getFilesDir(), "file.file");
其中
context
是您的应用程序当前的android.content.context

编辑:

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

…因为ActionBarActivity扩展了活动,这是一个上下文。我已经有一段时间没有为Android开发了,但是很明显。查看那篇文章以了解更多信息

我在第一次探索Android开发时遇到了类似的问题。尝试按以下方式创建文件:

File f = new File(context.getFilesDir(), "file.file");
其中
context
是您的应用程序当前的android.content.context

编辑:

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

…因为ActionBarActivity扩展了活动,这是一个上下文。我已经有一段时间没有为Android开发了,但是很明显。查看那篇文章以了解更多信息

我在第一次探索Android开发时遇到了类似的问题。尝试按以下方式创建文件:

File f = new File(context.getFilesDir(), "file.file");
其中
context
是您的应用程序当前的android.content.context

编辑:

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


…因为ActionBarActivity扩展了活动,这是一个上下文。我已经有一段时间没有为Android开发了,但是很明显。查看那篇文章以了解更多信息

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

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

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

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

@AndyThomas:正确,删除了我的注释。@可选-检查变量
文件
是否引用与您在方法
openFileOutput()
中打开的文件相同的实际路径。(更好的方法是将变量
file
传递到
openFileOutput()
,以消除这个问题。)我现在刚刚检查了这个问题,但不幸的是问题仍然存在:(@AndyThomas:Correct,deleted my comment。@可选-检查变量
文件
是否引用了与方法
openFileOutput()
中打开的文件相同的实际路径(最好将变量
文件
传递到
openFileOutput()
,以消除此问题。)我刚刚检查了这个,但不幸的是问题仍然存在。(@AndyThomas:正确,删除了我的评论。@可选-检查变量
文件
是否引用了与您在方法
openFileOutput()
中打开的文件相同的实际路径。(更好的方法是将变量
file
传递到
openFileOutput()
,以消除这个问题。)我现在刚刚检查了这个问题,但不幸的是问题仍然存在:(@AndyThomas:Correct,deleted my comment。@可选-检查变量
文件
是否引用了与方法
openFileOutput()
中打开的文件相同的实际路径(最好将变量
文件
传递到
openFileOutput()
,以消除此问题。)我现在刚刚检查了这个问题,但不幸的是问题仍然存在。:(嗯,这个问题有一个有趣的解决方案。这实际上只是解决方案的第一部分。共有3个步骤:步骤1)遵循EJP的答案。步骤2)实现ePluibunk的答案。步骤3)移动开始()到活动的onStart方法。它在前面的onCreate方法中,这意味着我必须退出应用程序才能再次运行if/else语句。只需通过按例如“Home”来最小化应用程序,将不会触发onCreate()下一次打开应用程序时,嗯,这个问题有一个有趣的解决方案。这实际上只是解决方案的第一部分。有3个步骤:步骤1)遵循EJP的答案。步骤2)实现ePluiBusFunk的答案。步骤3)将start()移到活动的onStart方法。它在前面的onCreate方法中,这意味着我必须退出应用程序才能再次运行if/else语句。当下次打开应用程序时,只需按例如“Home”来最小化应用程序,将不会触发onCreate()。这个问题有一个有趣的解决方案。这实际上只是解决方案的第一部分。有3个步骤:步骤1)遵循EJP的答案。步骤2)执行Epluribunk的回答。步骤3)将start()移动到活动的onStart方法。它在前面的onCreate方法中,这意味着我必须退出应用程序才能再次运行if/else语句。当下次打开应用程序时,只需按例如“Home”来最小化应用程序,将不会触发onCreate()。这个问题有一个有趣的解决方案。这实际上只是解决方案的第一部分。有3个步骤:步骤1)遵循EJP的答案。步骤2)执行Epluribunk的回答。步骤3)将start()移动到活动的onStart方法。它在前面的onCreate方法中,这意味着我必须退出应用程序才能再次运行if/else语句。只是最小化应用程序