【发布时间】:2012-03-19 13:10:18
【问题描述】:
尝试将 byte[] 写入文件,我认为它工作正常
String filename = "BF.dat";
public void WriteByteToFile(byte[] mybytes, String filename){
try {
FileOutputStream FOS = openFileOutput(filename, MODE_PRIVATE);
FOS.write(mybytes);
FOS.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
然后稍后在应用程序中我需要将字节读回字节[]
String filename = "BF.dat"
public byte[] ReadByteFromFile (String filename){
byte[] mybytes = null;
try {
File file = new File(filename);
FileInputStream FIS = new FileInputStream(file);
mybytes = new byte[(int)file.length()];
FIS.read(mybytes);
FIS.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mybytes;
}
字节没有从这里返回,(它在普通的 java 中工作 - 但不适用于 android apk)我不确定我需要什么才能让它在 android 中工作。有很多将字节写入文件的示例,但我找不到任何解释如何取回它们的示例。
如果有什么不清楚的地方请评论,如果需要我会解释更多。
【问题讨论】:
-
你传入
ReadByteFromFile(...)方法的filename是否完全合格? -
完全合格的意思是一样的吗?字符串文件名 = "BF.dat";两者都是一样的。 (我会将此添加到我的问题中)
-
查看 dbryson 的回答。您需要在您的情况下使用
openFileInput。我所说的完全合格的意思是/data/data/.../.../BF.dat。如果你检查你的 logcat,你可能会得到一个FileNotFoundException被上面的代码记录。 -
我看不到 FileNotFoundException 但是当我尝试使用 byte[] 时,我的 logcat 说:Casused by: java.lang.IllegalArgumentException: key is null.. key is等于返回值,所以它只是返回 null。
-
我故意输入了错误的文件名,同样的事情发生了。所以可能是文件名。我也试过 openFileInput(filename) 但没有运气,但也许我做错了,所以我会继续尝试
标签: java android writetofile