모든 검색 가능한 압축 라이브러리?
-
20-09-2019 - |
문제
내가 찾는 것은 일반적인 압축 라이브러리를 지원하는 랜덤 액세스 중에 압축 해제합니다.내가 원하는 압축키로 하나의 압축된 형식과 동시에 내가 원하는 압축을 해제/추출물이십니다.
물론 저는 압축할 수 있는 각 기사를 개별적으로,그러나 이것을 주지 않을 것이 많이 압축 비율이 있습니다.내가 들어 LZO 압축 파일로 구성되어 있는 많은 덩어리는 압축을 해제할 수 있습 별도로만 나가지 못했 API+문서입니다.나는 사용할 수도 있습 Z_FULL_FLUSH 모드에서는 zlib,하지만 거기에 다른 어떤 더 나은 대안은?
다른 팁
GZIP에서 찾을 수있는 압축 빌드의 경우 Dict Server의 Dictzip과 Sleuth Kit의 SGZIP가 있습니다.
당신은 이것들 중 어느 쪽에도 쓸 수없고 찾을 수 있듯이 어떤 식 으로든 읽는다는 점에 유의하십시오.
dotnetzip .NET 용 Zip Archive 라이브러리입니다.
dotnetzip을 사용하면 zip의 특정 항목을 무작위로 참조하고 순서대로 압축 해제 할 수 있으며 항목을 추출 할 때 압축을 피우는 스트림을 반환 할 수 있습니다.
이러한 기능의 이점으로 DotNetzip은 ASP.NET의 가상 경로 제공 업체, 그것은 당신이 설명하는 것을 정확하게 수행합니다 - 그것은 압축 된 zip 파일에서 특정 웹 사이트의 모든 컨텐츠를 제공합니다. 동적 페이지 (ASP.NET) 페이지로 웹 사이트를 수행 할 수도 있습니다.
ASP.NET Zip Virtual Path Provider, DotnetZip을 기반으로합니다
중요한 코드는 다음과 같습니다.
namespace Ionic.Zip.Web.VirtualPathProvider
{
public class ZipFileVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
{
ZipFile _zipFile;
public ZipFileVirtualPathProvider (string zipFilename) : base () {
_zipFile = ZipFile.Read(zipFilename);
}
~ZipFileVirtualPathProvider () { _zipFile.Dispose (); }
public override bool FileExists (string virtualPath)
{
string zipPath = Util.ConvertVirtualPathToZipPath (virtualPath, true);
ZipEntry zipEntry = _zipFile[zipPath];
if (zipEntry == null)
return false;
return !zipEntry.IsDirectory;
}
public override bool DirectoryExists (string virtualDir)
{
string zipPath = Util.ConvertVirtualPathToZipPath (virtualDir, false);
ZipEntry zipEntry = _zipFile[zipPath];
if (zipEntry != null)
return false;
return zipEntry.IsDirectory;
}
public override VirtualFile GetFile (string virtualPath)
{
return new ZipVirtualFile (virtualPath, _zipFile);
}
public override VirtualDirectory GetDirectory (string virtualDir)
{
return new ZipVirtualDirectory (virtualDir, _zipFile);
}
public override string GetFileHash(string virtualPath, System.Collections.IEnumerable virtualPathDependencies)
{
return null;
}
public override System.Web.Caching.CacheDependency GetCacheDependency(String virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
{
return null;
}
}
}
VirtualFile은 다음과 같이 정의됩니다.
namespace Ionic.Zip.Web.VirtualPathProvider
{
class ZipVirtualFile : VirtualFile
{
ZipFile _zipFile;
public ZipVirtualFile (String virtualPath, ZipFile zipFile) : base(virtualPath) {
_zipFile = zipFile;
}
public override System.IO.Stream Open ()
{
ZipEntry entry = _zipFile[Util.ConvertVirtualPathToZipPath(base.VirtualPath,true)];
return entry.OpenReader();
}
}
}
BGZF는 유전체학에 사용되는 형식입니다.http://biopython.org/dist/docs/api/bio.bgzf-module.html
그것은 Samtools C 라이브러리의 일부이며 실제로 GZIP 주변의 간단한 해킹입니다. Samtools C 구현 또는 Picard Java 구현을 사용하고 싶지 않다면 직접 작성할 수 있습니다. Biopython은 파이썬 변형을 구현합니다.
OS를 지정하지 않았습니다. OS가 관리하는 압축 디렉토리에 파일을 저장할 수 있습니까? 그러면 압축뿐만 아니라 "찾을 수있는"부분이 있습니다. CPU 오버 헤드는 예측할 수없는 액세스 시간으로 처리됩니다.
내가 사용하 MS Windows Vista,불행하게도,그리고 나는 파일을 보낼 수 있습 explorer zip 파일로는 것처럼 정상적인 파일이 있습니다.아마도 그것은 여전히 작동에 7(는 되고 싶어합니다).나는 생각을 했는 해당 유틸리티에서 우분투 또한,하지만 나는 확실하지 않다.수도 테스트에서 Mac OSX,나는 가정한다.
는 경우 웹사이 너무 짧은 괜찮은 압축 비율로,다음 가장 간단한 방법은 타르의 배치를 위키백과사전-말,12 기사 시기에,또는 그러나 많은 기사를 작성됩니다.다음 압축을 각각 독립적으로 배치.
원칙적으로 제공하는 압축보다 압축함으로써 각각의 문서는 개별적으로,하지만 더 나쁠 압축보다 단단 압축의 모든 기사를 함께.추출 문서에서는 12 위에서 압축된 배치 필요한 전체를 압축 해제 일괄(다음을 던지고 제 11 기다),하지만 여전히 많은보다 훨씬 더 빨리,압축 해제의 절반 Wikipedia.
많은 압축 프로그램을 끊을 입력 스트림의 순서로"블록",압축한 각 블록,처음부터 독립적으로 다른 블록입니다.당신이뿐만 아니라 선택하는 배치 크기의 크기에 관하여 블록--큰 배치지 않을 것은 더 나은 압축율 및 더 오래 걸리고 있습니다
나는 실험으로 여러 가지 방법으로 보다 쉽게 시작하는 디코딩하는 압축된 데이터베이스에서 중간에 있습니다.슬프게도,지금까지"영리한"기법을 적용했는 여전히 나쁘 압축율 및 더 많은 작업을 생산하는 디코딩된 섹션보다 훨씬 더 간단한"배치"접근 방식이다.
에 대한 더 많은 정교한 기술을 볼 수 있습니다
- MG4J: 관리에 대한 기가바이트 Java
- "관리가바이트:압축 및 인덱싱 문서 이미지"이용하여 H.Witten, Alistair 모고,Timothy C.벨