gpt4 book ai didi

java - Java Android 中的 EOFException?需要帮助

转载 作者:行者123 更新时间:2023-12-01 05:36:24 26 4
gpt4 key购买 nike

我正在尝试进行某种序列化,可以直接从文件中读取和写入对象。

首先,我只是尝试将一个字符写入文件并尝试读取它。这总是给我 EOF 异常。

我正在 Android 设备上尝试。这是我的代码:

public class TestAppActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
WriteToFile();
Load();
} catch (Exception e) {
e.printStackTrace();
}

}

public void Load () throws IOException
{
InputStream fis;
ObjectInputStream in = null;
try {
fis = new FileInputStream(Environment.getExternalStorageDirectory() + "\\test2.ser");
in = new ObjectInputStream(fis);
char temp = in.readChar();

} catch (IOException e) {
e.printStackTrace();
} finally {
in.close();
}
}

public static void WriteToFile() throws Exception {
try {
OutputStream file = new FileOutputStream(Environment.getExternalStorageDirectory() + "\\test2.ser");
ObjectOutput output = new ObjectOutputStream(file);
try {
output.writeChar('c');
} finally {
output.close();
}
} catch (IOException ex) {
throw ex;
}catch (Exception ex) {
throw ex;
}
}
}

最佳答案

在这种情况下,EOFException 意味着没有更多数据可供读取,这(在这种情况下)只能意味着文件为空。

为什么使用ObjectInput/OutputStreams但只写入字符?对于这种用法,您最好使用DataInput/OutputStreams

此外,捕获异常只是为了重新抛出它们是没有意义的。

此外,从文件中读取 char 是没有意义的,除非您要将其放在本地变量之外的其他位置,而该方法甚至不会返回该变量。

关于java - Java Android 中的 EOFException?需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8133088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com