我有这个代码将float数组保存到文件中以备将来使用。但是当我用命令saveArray("the x",x);
调用它时,其中x是我要保存的浮点数组,它返回Null到文件而不是创建。
public void saveArray(String filename, float[] array) {
try {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(array);
out.flush();
out.close();
}
catch (IOException e) {
System.out.println(e);
}
}
public float[] loadArray(String filename) {
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
float[] saved_array = (float[])in.readObject();
in.close();
return saved_array;
}
catch (Exception e) {
System.out.println(e);
}
return null;
}
当我尝试保存
时,这就是我的回报05-04 07:21:59.547: I/System.out(622): java.io.FileNotFoundException: /the x: open failed: EROFS (Read-only file system)
05-04 07:21:59.547: I/System.out(622): java.io.FileNotFoundException: /the x: open failed: ENOENT (No such file or directory)
05-04 07:21:59.557: I/System.out(622): null
EDIT2:我找到了解决方案,但我想要更多帮助!
我像以前一样离开了saveArray,我之前创建了一个目录和一个文件。
final File dir = new File(context.getFilesDir() + "/works");
dir.mkdirs();
final File file = new File(dir, "the_x.txt");
saveArray(file.getPath()+file.getName(),x);
似乎得救了。现在,我尝试将其加载到另一个数组,但新数组“a”永远不会更改值。你认为哪里是错误的?在上面查看我的loadArray函数。 我试试这些:
a = loadArray(file.getPath()+file.getName());
a = loadArray(file.getName());
a = loadArray(file.getPath());
a = loadArray("the_x.txt");
答案 0 :(得分:0)
如果您使用SD卡写文件,则需要以下权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
因此,您的filanem
应该是"/sdcard/yourfile.txt"
你可以使用另一件事
使用
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
context.openFileOutput(
filename, Context.MODE_PRIVATE));