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' 模式。
我想知道这段代码有什么问题:
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,但显然
您需要在打开文件之前检查是否为空。打开输出文件会创建一个新的零长度文件,除非您指定 'append' 模式。