1
我想用骆驼在一个文件中写一个字节数组。但是,为了取回我的数组,我想将它们逐行写入,或使用另一个分隔符。 如何用骆驼做到这一点?用骆驼线逐行写入和读取文件
from(somewhere)
.process(new Processor() {
@Override
public void process(final Exchange exchange) throws Exception {
final MyObject body = exchange.getIn().getBody(MyObject.class);
byte[] serializedObject = MySerializer.serialize(body);
exchange.getOut().setBody(serializedObject);
exchange.getOut().setHeader(Exchange.FILE_NAME, "filename");
}
}).to("file://filepath?fileExist=Append&autoCreate=true");
还是有人有另一种方法让他们回来?
PS:我需要有只有一个文件,否则它会一直太容易了......
编辑: 我写成功通过线我的文件符合out.writeObject方法(感谢皮特)。我可以阅读它们:
InputStream file = new FileInputStream(FILENAME);
InputStream buffer = new BufferedInputStream(file);
input = new ObjectInputStream(buffer);
Object obj = null;
while ((obj = input.readObject()) != null) {
// Do something
}
但我不能用骆驼拆分和阅读它们。你有什么想法用骆驼阅读它们吗?
我不能使用Xml,因为我想要一个尽可能小的文件。我不能把字节[]放在更大的位置,因为我有多个线程写入同一个文件。 – Pith
如果考虑文件大小,则说明XML膨胀。看看JSON,它更纤薄,但仍然基于文本。为什么不能在字节[]的末尾添加一些分隔符字节?它甚至在写入文件之前。 'byte [] serObj = Arrays.CopyTo(serializedObject,serializedObject.length + 3); serObj [serializedObject.length] =(byte)'\ n'; serObj [serializedObject.length + 1] =(byte)'\ n'; serObj [serializedObject.length + 2] =(byte)'\ n'; ' 如果\ n \ n \ n是唯一的分隔符,您可能需要选择其他序列。 –
谢谢,我成功地写了我的文件,但我无法读取它。请参阅我的编辑 – Pith