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语句。只是最小化应用程序