2012-05-08 2 views
0

Я пытаюсь создать приложение wp7, которое должно позволить пользователю читать электронные книги в формате epub. Поскольку нет доступной библиотеки для чтения epub-файла на телефоне Windows, я пытаюсь его создать. Поэтому я должен разархивировать файл, а затем проанализировать его.
Проблема в том, что я не могу разархивировать файл epub. Я использую SharpZipLib.WindowsPhone7.dll, но я получаю исключение:Windows Phone epub reader

Попытка доступа к методу не удалось: System.IO.File.OpenRead (System.String)

на этой линии:

ZipInputStream s = new ZipInputStream(File.OpenRead(path_epubfile)); 

Может ли кто-нибудь мне помочь, пожалуйста?

+0

Что такое 'path_epubfile'? Является ли он содержащимся в IsolStorage (т. Е. Встроенным в проект как контент или загруженным из Интернета в вашем приложении) или он встроен в ваше приложение? (Ресурс)? – MrMDavidson

+0

на данный момент (для проверки метода) он встроен в мое приложение, но он будет содержаться в IsolatedStorage. – user1382377

+0

И каково значение 'path_epubfile'? – MrMDavidson

ответ

1

Это зависит от того, как получается контент. Здесь три возможных варианта;

Вариант 1: Если содержание будет добавлен в ваш проект с Построение действий «Материалы» вы можете получить поток, используя StreamResourceInfo класс (В System.Windows.Resources имен)

StreamResourceInfo info = Application.GetResourceStream(new Uri("MyContent.txt", UriKind.Relative)); 
    using (info.Stream) { 
    // Make use of the stream as you will 
    } 

вариант 2: Если вы добавили его в свой проект и установить Build Action на «Embedded Resource», то вам необходимо использовать GetManifestResourceStream()

using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ProjectName.MyContent.txt")) { 
    // Make use of stream as you will 
} 

Примечание. Вам нужно будет заменить «ProjectName» на название вашего проекта. Поэтому, если ваш проект был «EPubReader», а встроенный ресурс был «Example.txt», вам нужно передать «EPubReader.Example.txt» на номер GetManifestResourceStream(). Вы можете использовать GetManifestResourceNames(), чтобы узнать, какие ресурсы доступны.

Вариант 3: Если вы получили контент во время выполнения, он будет сохранен в IsolatedStorage.

using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication()) { 
    using (IsolatedStorageFileStream stream = store.OpenFile("MyContent.txt", FileMode.Open)) { 
    // Make use of stream as you will 
    } 
} 
Смежные вопросы