Android 工作室内部存储 FileOutputStream FileNotFound
Android studio internal storage FileOutputStream FileNotFound
我正在 android 工作室工作,我想 write/store 内部存储中的一个文件。我知道有几个关于堆栈溢出的问题。我设法从那些人那里得到了这段代码。
public static void writeObj(Alarm alarm, Context context){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new FileOutputStream("ArrayList.txt", true);
oos = new ObjectOutputStream(fos);
oos.writeObject(alarm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这段代码对我不起作用。我设法弄清楚我遇到了 FileNotFound 异常,因为 FileOutputStream 无法创建我的文件。所以我做了更多挖掘并将其添加到我的 try/catch 上方(在 FileOpenOutputStream 中用 f 替换 "ArrayList.txt")。
File f = new File(context.getFilesDir(),"ArrayList.txt");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
这为我创建了文件,让我通过了 FileNotFound 异常捕获,但现在我遇到了 IOException。我一直没能找到解决这个问题的办法。有人可以给我一些提示,说明我会收到此异常的原因。是否可能需要向 Manifest 文件添加我不知道的某种类型的权限?
请参阅此处的文档 - https://developer.android.com/reference/java/io/ObjectOutputStream
Only objects that support the java.io.Serializable interface can be written to streams.
因此您必须为 Alarm class 实现 Serializable 接口,并且它的所有字段也必须是 Serializable 才能使用 ObjectOutputStream。
您可以从文档中找到更多信息。
其他参考文献
Serialization Java: which classes need to "implement Serializable"?
我正在 android 工作室工作,我想 write/store 内部存储中的一个文件。我知道有几个关于堆栈溢出的问题。我设法从那些人那里得到了这段代码。
public static void writeObj(Alarm alarm, Context context){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try{
fos = new FileOutputStream("ArrayList.txt", true);
oos = new ObjectOutputStream(fos);
oos.writeObject(alarm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
这段代码对我不起作用。我设法弄清楚我遇到了 FileNotFound 异常,因为 FileOutputStream 无法创建我的文件。所以我做了更多挖掘并将其添加到我的 try/catch 上方(在 FileOpenOutputStream 中用 f 替换 "ArrayList.txt")。
File f = new File(context.getFilesDir(),"ArrayList.txt");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
这为我创建了文件,让我通过了 FileNotFound 异常捕获,但现在我遇到了 IOException。我一直没能找到解决这个问题的办法。有人可以给我一些提示,说明我会收到此异常的原因。是否可能需要向 Manifest 文件添加我不知道的某种类型的权限?
请参阅此处的文档 - https://developer.android.com/reference/java/io/ObjectOutputStream
Only objects that support the java.io.Serializable interface can be written to streams.
因此您必须为 Alarm class 实现 Serializable 接口,并且它的所有字段也必须是 Serializable 才能使用 ObjectOutputStream。
您可以从文档中找到更多信息。
其他参考文献
Serialization Java: which classes need to "implement Serializable"?