2011-11-23 1 views
0

System.IO.Packaging 어셈블리를 사용하여 zip 패키지를 읽을 때 표준 Windows zip 유틸리티를 사용하여 만든 zip 파일을 읽을 수 없습니다 (패키지 파트 (내부 파일)은 존재하지 않는 것으로 표시됩니다.System.IO.Packaging 라이브러리가 표준 Windows zip 파일을 읽지 않음

몇 가지 연구를하고 후에는 System.IO.Packaging 라이브러리 우편을 압축 표준 창에 존재 나타나지 않습니다가 생성 된 지퍼,에 Content_Types.xml을 추가하기 때문입니다 것으로 보인다.

예 :

using (Package Zip = Package.Open(BundlePath, FileMode.Open)) 
{ 
    Uri FileUri = PackUriHelper.CreatePartUri(new Uri("somefile.xml", UriKind.Relative)); 
    if (!Zip.PartExists (FileUri)) //this fails even though the file exists in the zip 
     throw new ResourceException(String.Format("Zip {0} does not contain file", BundlePath)); 
    ... 

는 여전히 표준 zip 파일을 읽을 .NET에서 제공하는 포장 시스템을 사용하는 어쨌든 거기에, 또는 라이브러리를 사용하여 작성해야합니까.

편집 :

수동으로 파일 (Content_Types.xml)을 추가하고, 윈도우 압축 유틸리티를 사용하여 압축하는 패키지를 읽을 수 있도록에서 성공을 증명한다.

감사합니다.

+0

"표준 Windows zip 유틸리티"란 무엇입니까? – Oded

+0

@Oded - Windows XP, Windows 7 등과 함께 제공되는 기본 압축 유틸리티 – cweston

+0

XP와 함께 제공되는 것을 모르는 상태에서 다시 묻습니다. – Oded

답변

4

System.IO.Packaging에는 압축 파일이 아닌 패키지를 읽을 수있는 곳이 없습니다. 대신 DotnetZip을 사용하십시오.

1

불행히도 System.IO.Packaging 라이브러리에서 [content_types] .xml 파일을 포함하지 않는 표준 zip 형식의 파일을 열 수있는 좋은 방법이 없다고 생각합니다.

나는 몇 달 전이 문제에 일하고, 이것은 나는 우리가 처음에 .NET 내에서 우리의 모든 파일을 생성하기로 결정하기 전에이 파일을 삽입 할 것을 구현하려고했던 것입니다 :

format of the zip file는 다음

(--- --- 1 파일) (파일 2 --- ---) (--- --- 파일 X) (목차)

이다

타사 라이브러리가 없으면 zip 파일을 바이너리 파일로 열어 끝까지 건너 뛰고 해당 목차를 읽을 수 있어야하며 마지막에 [content_types] .xml 파일을 추가해야합니다. 유형/기본 확장 정보, 목차 항목 목차 조정, 파일 끝에 추가하고 이동하십시오. 이 구현하려고 할 때 실행중인 문제는 거기에 여러 체크섬을 파일이 손상되지 않았 음을 확인할 수 있습니다, 나는 이것에 방향을 변경하는 데 필요한 모든 시간에 그들을받지 않았다.

나는 이것이 당신이 필요로하는 더 많은 정보라고 확신하지만, 당신 자신의 솔루션을 구현하기로 결정하면 도움이 될 것입니다.

관련 문제