无法附加到ObjectOutputStream
吗?
我正在尝试附加到对象列表。摘录后的代码是一个在作业完成时调用的函数。
FileOutputStream fos = new FileOutputStream
(preferences.getAppDataLocation() + "history" , true);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject( new Stuff(stuff) );
out.close();
但是,当我尝试读取它时,我只会得到文件中的第一个。然后我得到java.io.StreamCorruptedException
。
要阅读我正在使用
FileInputStream fis = new FileInputStream
( preferences.getAppDataLocation() + "history");
ObjectInputStream in = new ObjectInputStream(fis);
try{
while(true)
history.add((Stuff) in.readObject());
}catch( Exception e ) {
System.out.println( e.toString() );
}
我不知道会出现多少个对象,因此我在阅读时没有例外。根据Google的说法,这是不可能的。我想知道是否有人知道吗?
子类ObjectOutputStream
并覆盖writeStreamHeader
方法:
public class AppendingObjectOutputStream extends ObjectOutputStream {
public AppendingObjectOutputStream(OutputStream out) throws IOException {
super(out);
}
@Override
protected void writeStreamHeader() throws IOException {
// do not write a header, but reset:
// this line added after another question
// showed a problem with the original
reset();
}
}
要使用它,只需检查历史文件是否存在,然后实例化此可附加流(如果文件存在=如果我们追加=我们不需要头)或原始流(如果文件不存在=实例化)我们需要一个标头)。
如何将数据附加到文件的末尾(或开头)?我试着用 但它只写最后一项。
问题内容: 在春季,您可以XML配置一个bean以具有一个限定符。如果通过Java批注配置Bean,我似乎找不到如何附加限定符。那是怎么回事?我是否必须仅使用简单的旧名称? 问题答案: 如果您使用的是注释(不是基于Java的配置),则可以使用以下内容添加限定符(请参见Spring文档): 并使用以下命令连接bean(同样,请参见Spring文档):
我有一个返回
问题内容: 我已经创建了两个XML文档,并且想将这两个文档合并到一个新的信封中。所以我有 和 我想做的是将两个节点合并到一个根节点中: 合并的文档 我尝试创建一个临时文档,并用文档的根节点替换子级: 我当时希望用两个文档的根元素替换两个空格,但我得到“ WRONG_DOCUMENT_ERR:一个节点在与创建它的文档不同的文档中使用”。我尝试采用和导入根节点,但是遇到相同的错误。 是否有一些简便的方
我有一个程序,它总是将相同的文件附加到GMAIL(撰写 它所做的是: 在Android 6.0之前,它一直工作良好。现在,我在尝试使用它时收到以下错误: 无法附加空文件 Astro文件共享给我同样的错误(可能是旧版本)。 但是,我安装了ES File Explorer,当我执行相同的例程并选择该文件时,我会收到一个对话框,其中显示: 将文件作为 普通Android方式(适用于彩信、Gmail等)
问题内容: 我正在写某种生成加密日志文件的记录器。不幸的是,密码学不是我的强项。现在,我可以向文件写入几条消息,然后关闭文件。然后我可以打开它,附加一些消息,再次关闭,解密后,我在文件中间看到填充字节。有什么方法可以处理加密文件,而不必每次我想添加一些消息时都对其解密? 编辑 :更多细节。当前实现使用CipherOutputStream。据我了解,没有办法 寻求 使用它。如果我将控制输出数据大小可