zip 또는 gzip 파일에 효율적으로 줄을 추가 할 수 있습니까?Java zip appline
나는 주식 시장 데이터를 파일 시스템에 직접 저장하고 있으며 매 5ms마다 업데이트되는 약 40 개의 파일이 있습니다.
가장 좋은 방법은 무엇입니까?
zip 또는 gzip 파일에 효율적으로 줄을 추가 할 수 있습니까?Java zip appline
나는 주식 시장 데이터를 파일 시스템에 직접 저장하고 있으며 매 5ms마다 업데이트되는 약 40 개의 파일이 있습니다.
가장 좋은 방법은 무엇입니까?
zip 파일이 아닌 데이터베이스를 사용하십시오.
틱 데이터를 저장하는 데 플랫 파일을 사용하는 것이 좋습니다 –
zip 파일을 편집하는 작업이 완료되면 (너무 읽기 - 수정 - 닫기) 오버 헤드가 너무 많이 발생합니다. 나는 약간의 합리적인 속도 (즉 매 5 초 또는 그 이상)로 메모리의 변화를 축적하고 목표 파일을 수정하는 것이 더 낫다고 생각한다.
한 접근법은 compressing data sent over a socket 일 수 있으며 때때로 압축 된 블록을 디스크에 플러시 할 수 있습니다.
java.nio.file.FileSystems :
http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html
을Java SE 7 릴리스에서 도입 된 zip 파일 시스템 제공자는 사용자 정의 파일 시스템 제공자의 구현입니다. zip 파일 시스템 제공자는 zip 또는 JAR 파일을 파일 시스템으로 취급하고 파일의 내용을 조작 할 수있는 기능을 제공합니다. zip 파일 시스템 제공자는 여러 파일 시스템, 즉 각 zip 또는 JAR 파일에 대해 하나의 파일 시스템을 작성합니다.
TrueZip
http://truezip.java.net/
것처럼 아카이브 파일에 대한 투명한 액세스를 제공합니다 (VFS)를위한 자바 기반의 플러그인 프레임 워크TrueZIP입니다 가상 파일 시스템 그들은 단지 일반 디렉토리
기억 : 캐시에 메모리를 사용하고, 디스크 작업을 줄이며, 쓰기를 비 차단으로 만듭니다.
ZipOutputStream의 쓰기 메소드를 사용하여 지정된 오프셋에서 쓸 수 있습니다.
String filepath = new String("/tmp/updated.txt")
FileOutputStream fout = new FileOutputStream("/tmp/example.zip");
ZipOutputStream zout = new ZipOutputStream(fout);
byte[] file = IOUtils.toByteArray(mWriter.toString());
short yourOffset = 0;
ZipEntry ze = new ZipEntry(filepath);
try {
zout.putNextEntry(ze);
zout.write(file, yourOffset, file.length);
zout.closeEntry();
} catch(Exception e) {
e.printStackTrace();
}
당신은 당신이 다시 작성하고 오프셋 어디 라인에서 쓰기를 호출하여 우편 항목을 대체 할 수있는 아파치 평민 IOUtils (수입 org.apache.commons.io.IOUtils)를 사용하여 바이트 배열로 파일을 변환하는 경우 당신은 편집을 시작하고 싶습니다. 이 경우 0에서 file.length까지 전체 파일을 씁니다. ZipEntry를 드라이브의 업데이트 된 파일 경로로 생성하여 zip 파일을 바꿀 수 있습니다.
Zip 파일에는 * lines * 대신 파일이 없습니다. –
스택 오버플로에 오신 것을 환영합니다. 귀하의 질문에 세부적인 것이 없기 때문에 귀하를 도울 수 없을 것 같습니다. 지금까지 무엇을 시도 했습니까? 그 결과는 무엇입니까? http://stackoverflow.com/questions/how-to-ask –
5 밀리 초마다 40 개의 파일을 포함하는 zip 파일을 업데이트 하시겠습니까?나는 무서워. –