0

我正在尝试构建一个必须允许用户阅读 epub 格式的电子书的 wp7 应用程序。由于没有任何可用的库来读取 Windows 手机上的 epub 文件,我正在尝试创建一个。所以我必须解压缩文件然后解析它。
问题是我无法解压缩 epub 文件。我正在使用SharpZipLib.WindowsPhone7.dll,但出现异常:

尝试访问该方法失败:System.IO.File.OpenRead(System.String)

在这条线上:

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

任何人都可以帮助我吗?

4

1 回答 1

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:如果您已将其添加到项目中并将构建操作设置为“嵌入式资源”,那么您需要使用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
  }
}
于 2012-05-10T13:46:50.813 回答