Camel을 사용하여 파일에 바이트 배열을 쓰고 싶습니다. 그러나, 배열을 되찾기 위해서, 나는 한 줄씩 또는 다른 분리 자로 써야한다. 낙타로 어떻게 할 수 있습니까?Camel을 사용하여 파일을 한 줄씩 씁니다.
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 방법으로 라인으로 내 파일 라인을 쓰기 (감사에 : 나는
편집 ... 그렇지 않으면 너무 쉽게했을 것이다, 하나의 파일이 필요합니다 Petter). 그리고 나는 그것들을 다음과 같이 읽을 수 있습니다 :
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을 사용할 수 없습니다. 그리고 같은 파일에 여러 쓰레드가 있기 때문에 byte []를 더 넣을 수는 없습니다. – Pith
맞습니다. 파일 크기를 고려하면 XML이 부풀려집니다. JSON을 확인하십시오. 더 슬림하지만 텍스트 기반입니다. 왜 바이트 []의 끝 부분에 분리 기호 바이트를 추가 할 수 없습니까? 파일에 쓰여 지기도 전에입니다. byte [] serObj = Arrays.CopyTo (serializedObject, serializedObject.length + 3); serObj [serializedObject.length] = (바이트) '\ n'; serObj [serializedObject.length + 1] = (바이트) '\ n'; serObj [serializedObject.length + 2] = (바이트) '\ n'; ' \ n \ n \ n이 (가) 고유 한 구분자 인 경우 다른 순서를 선택할 수 있습니다. –
감사합니다. 파일을 성공적으로 작성했지만 읽을 수 없습니다. 내 편집을 보아라. – Pith