지난번 Windows Phone 7 에서 압축파일을 읽는 방법에 대한 글을 포스팅한 적이 있습니다. (보지 못하신 분은 [Windows Phone 7] - Windows Phone 7 에서 ZIP 압축파일 읽기 를 보시면 되겠습니다.)
압축파일을 프로젝트에 추가해서 GetResourceStream 메서드를 이용하여 압축된 파일에 대한 Stream 객체를 얻고,
그 Stream 객체를 이용하여 ZipFile 클래스의 인스턴스를 생성하였는데요.
이번에 프로젝트 구현시에 격리된 저장소(Isolated Storage)에 저장된 파일을 IsolatedStorageFileStream 형태로 읽어서, 그 Stream을 ZipFile 클래스의 인스턴스 생성시 이용하고자 하니, 문제가 발생하였습니다.
SharpZipLib에서 따로 오류는 발생하지 않으나, 객체를 생성하는 과정에서 프로그램이 응답없음 상태로 빠지고 말더군요.
고민하다가, IsolatedStorageFileStream을 MemoryStream으로 옮겨서, 이 MemoryStream 을 이용하여 ZipFile 클래스의 인스턴스를 생성하는 방식으로 문제를 해결하였습니다.
코드는 아래와 같습니다.
코드에서 보면 격리된 저장소에 있는 SamplePictures.zip 파일을 IsolatedStorageFileStream 을 이용하여 읽어 MemoryStream으로 옮겨서 그 MemoryStream을 이용하여 ZipFile 객체를 생성하고 있습니다.
위와 같이 하시면, 격리된 저장소에 있는 압축파일(Zip파일)도 문제없이 사용하실 수 있습니다.
압축파일을 프로젝트에 추가해서 GetResourceStream 메서드를 이용하여 압축된 파일에 대한 Stream 객체를 얻고,
그 Stream 객체를 이용하여 ZipFile 클래스의 인스턴스를 생성하였는데요.
이번에 프로젝트 구현시에 격리된 저장소(Isolated Storage)에 저장된 파일을 IsolatedStorageFileStream 형태로 읽어서, 그 Stream을 ZipFile 클래스의 인스턴스 생성시 이용하고자 하니, 문제가 발생하였습니다.
SharpZipLib에서 따로 오류는 발생하지 않으나, 객체를 생성하는 과정에서 프로그램이 응답없음 상태로 빠지고 말더군요.
고민하다가, IsolatedStorageFileStream을 MemoryStream으로 옮겨서, 이 MemoryStream 을 이용하여 ZipFile 클래스의 인스턴스를 생성하는 방식으로 문제를 해결하였습니다.
코드는 아래와 같습니다.
System.IO.IsolatedStorage.IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication();
string localPath = "SamplePictures.zip";
using (MemoryStream mStream = new MemoryStream())
{
using (IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(localPath, FileMode.Open, isf))
{
int bufferSize = 40 * 1024;
byte[] buffer = new byte[bufferSize];
int readBytes = 0;
do
{
readBytes = isfStream.Read(buffer, 0, bufferSize);
mStream.Write(buffer, 0, readBytes);
} while (readBytes > 0);
}
ZipFile zipFile = new ZipFile(mStream);
}
코드에서 보면 격리된 저장소에 있는 SamplePictures.zip 파일을 IsolatedStorageFileStream 을 이용하여 읽어 MemoryStream으로 옮겨서 그 MemoryStream을 이용하여 ZipFile 객체를 생성하고 있습니다.
위와 같이 하시면, 격리된 저장소에 있는 압축파일(Zip파일)도 문제없이 사용하실 수 있습니다.
'Windows Phone 7' 카테고리의 다른 글
Windows Phone 7 에서의 IsolatedStorageSettings 활용 (2) | 2010.11.08 |
---|---|
Windows Phone 7 에서 설정된 테마 알아오기 (0) | 2010.09.13 |
Windows Phone 7 에서 ZIP 압축파일 읽기 (0) | 2010.09.10 |
Windows Phone 7 에서 설치되지 않은 폰트 사용하기 (0) | 2010.09.09 |
웹에서 Windows Phone 7의 격리된 저장소로 파일 다운로드 받기 (3) | 2010.08.01 |