문제

내가 찾는 것은 일반적인 압축 라이브러리를 지원하는 랜덤 액세스 중에 압축 해제합니다.내가 원하는 압축키로 하나의 압축된 형식과 동시에 내가 원하는 압축을 해제/추출물이십니다.

물론 저는 압축할 수 있는 각 기사를 개별적으로,그러나 이것을 주지 않을 것이 많이 압축 비율이 있습니다.내가 들어 LZO 압축 파일로 구성되어 있는 많은 덩어리는 압축을 해제할 수 있습 별도로만 나가지 못했 API+문서입니다.나는 사용할 수도 있습 Z_FULL_FLUSH 모드에서는 zlib,하지만 거기에 다른 어떤 더 나은 대안은?

도움이 되었습니까?

해결책

xz-형식 파일은 색인을 지원하지만 기본적으로 인덱스는 유용하지 않습니다. 내 압축기, 픽즈, 유용한 색인이 포함 된 파일을 만듭니다. LIBLZMA 라이브러리의 함수를 사용하여 XZ 데이터 블록이 압축되지 않은 데이터의 위치에 해당하는 블록을 찾을 수 있습니다.

다른 팁

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.

많은 압축 프로그램을 끊을 입력 스트림의 순서로"블록",압축한 각 블록,처음부터 독립적으로 다른 블록입니다.당신이뿐만 아니라 선택하는 배치 크기의 크기에 관하여 블록--큰 배치지 않을 것은 더 나은 압축율 및 더 오래 걸리고 있습니다

나는 실험으로 여러 가지 방법으로 보다 쉽게 시작하는 디코딩하는 압축된 데이터베이스에서 중간에 있습니다.슬프게도,지금까지"영리한"기법을 적용했는 여전히 나쁘 압축율 및 더 많은 작업을 생산하는 디코딩된 섹션보다 훨씬 더 간단한"배치"접근 방식이다.

에 대한 더 많은 정교한 기술을 볼 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top