Exception in thread "main" java.io.IOException: mark/reset not supported at java.base/java.io.InputStream.reset(InputStream.java:738) at JavaExam/JE.Exam01.main(Exam01.java:31)
时间: 2024-03-17 09:43:48 浏览: 168
这个错误通常是由于使用的输入流不支持 mark/reset 操作导致的。在使用 `reset()` 方法之前,需要调用 `mark()` 方法设置标记,以便在需要时能够重置流。如果输入流不支持 mark/reset 操作,则不能使用 `reset()` 方法。
解决这个问题的方法是:
1. 使用支持 mark/reset 操作的输入流,例如 `BufferedInputStream` 或 `ByteArrayInputStream`。
2. 在调用 `reset()` 方法之前,先调用 `mark()` 方法设置标记,以便在需要时能够重置流。
3. 如果输入流不支持 mark/reset 操作,则可以考虑使用其他的输入流或者其他的方式进行输入。
在你的代码中,可以尝试使用 `BufferedInputStream` 或者 `ByteArrayInputStream` 来替换当前的输入流。例如:
```
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\studentdatabase.dat"));
ObjectInputStream ois = new ObjectInputStream(bis);
```
或者:
```
byte[] data = Files.readAllBytes(Paths.get("D:\\studentdatabase.dat"));
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ObjectInputStream ois = new ObjectInputStream(bais);
```
注意,在使用 `BufferedInputStream` 时,需要在读取完数据后调用 `close()` 方法关闭输入流,以便将缓冲区中的数据写入文件。
阅读全文