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