2

我正在创建一个 epub 阅读器。在那我想列出来自 iphone 的 .epub 文件。所以我想知道是否有任何可能的方法来列出来自 iphone 的 .epub 文件(不仅来自项目目录路径,还包括手机中的其他任何地方)?

4

4 回答 4

4

不,这是不可能的。

由于没有文件系统访问权限,除了应用程序沙箱中的目录。

所有应用程序都必须存储它们与沙箱一起使用的文件,你告诉 iOS 你的应用程序可以操作.epub文件。这将允许用户打开文件,例如您应用中的电子邮件。

于 2012-06-22T10:22:20.547 回答
2

正如@rckoenes 所回答的那样,除了您的应用程序包之外,无法访问文件系统。

您可以像这样访问应用程序包中的文件:

NSString *bundlePathName = [[NSBundle mainBundle] bundlePath];
NSError *error;
NSArray *bundleContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundlePathName error:&error];

for (NSString *currentItem in bundleContents) {
    if ([currentItem rangeOfString:@"." options:NSBackwardsSearch].location != NSNotFound) {
        int tempIndex = (int)([fileName rangeOfString:@"." options:NSBackwardsSearch].location);
        tempIndex++;
        NSString *aStrExtension = [[fileName substringWithRange:NSMakeRange(tempIndex, [fileName length]-tempIndex)] lowercaseString];

        if ([aStrExtension isEqualToString:@"epub"]) {

           //Add this file to an array, to make it available for choosing and view its details
        }
    }
}
于 2012-06-25T09:41:49.810 回答
1

如果您的意思是要打开未保存在应用程序包中的 ePub 文件,那么您不能,您将只能访问应用程序沙箱中的文件

于 2012-06-22T10:22:21.723 回答
1

根据@rckoenes:App 包中的任何文件都无法访问,

所以我以这种方式检索了 .epub 文件。

  NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
    NSFileManager *manager = [NSFileManager defaultManager];
    NSDirectoryEnumerator *direnum = [manager enumeratorAtPath:bundleRoot];

    NSString *filename;

    while ((filename = [direnum nextObject] )) {


        if ([filename hasSuffix:@".epub"]) {   //change the suffix to what you are looking for


            [arrayListofEpub addObject:[filename stringByDeletingPathExtension]];


        }

    }
于 2012-06-25T10:06:25.143 回答