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によると:AppBundleのファイルにはアクセスできません。

そこで、このように.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 に答える