2011-09-11 8 views
11

iFileのようにiOSデバイス上のファイルシステムを見ることができるが、デバイスを脱獄することができないような何らかの方法が開発者にあるのだろうか? デベロッパー向けに必要です。iOSデベロッパーはファイルシステムを表示できますか?

EDIT ありがとうございました!私はアプリフォルダの中に場所があり、読み書きできることを知っています。 しかし、私は、iFileのようにコーディングせずにデータをすばやく表示する方法を探していました。だから私は自分の書き込み機能が成功するかどうかを調べることができます。

+0

http://stackoverflow.com/q/14114309/82216とhttp://stackoverflow.com/q/8713093/82216を参照してください。 – sampablokuper

+0

http: /stackoverflow.com/questions/6480607 – Johann

答えて

6

iOSデバイスのファイルを見ることができますが、アプリケーションのサンドボックスでしか見ることができません。すべてのアプリケーションはDocuments,Cachetempというフォルダを持っています。最初の2つは、デバイスを接続するとiTunesによって自動的にバックアップされ、後者はバックアップされないと思う。

- (NSString *)getCacheDirPath 
{ 
    NSString *path = nil; 
    NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    if([myPathList count]) 
    { 
     NSString *bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; 
     path = [[myPathList objectAtIndex:0] stringByAppendingPathComponent:bundleName]; 
    } 
    return path; 
} 

caches、ディレクトリ内のすべてのファイルを表示するには - -

例、キャッシュ・ディレクトリのパスを取得する

- (NSMutableArray *)showFiles 
{ 
    NSError *err  = nil; 
    NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); 
    NSString *myPath = [myPathList objectAtIndex:0]; 
    NSArray *dirContent = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:myPath error:&err]; 
    if(err) NSLog(@"showFiles() - ERROR: %@",[err localizedDescription]); 
    NSMutableArray *filePaths = nil; 

    int count = (int)[dirContent count]; 
    for(int i=0; i<count; i++) 
    { 
     [filePaths addObject:[dirContent objectAtIndex:i]]; 
    } 
    return filePaths; 
} 
+2

答えをありがとう!私はアプリフォルダの中に場所があり、読み書きできることを知っています。しかし、私は、iFileのようにコーディングせずにデータをすばやく表示する方法を探していました。だから私は自分の書き込み機能が成功するかどうかを調べることができます。 –

+0

「コーディングなしでデータをすばやく表示する」という意味を理解するのは難しいですが、メモリ内のオブジェクトをディスクに簡単に格納して取り出せるようにしたいと思っています。そのために、あなたのオブジェクトにNSCodingプロトコルを使用します。コーディングなしでディスク – lms

+0

にオブジェクトを保存/ロードするのは非常に簡単ですか?あなたの書き込みが成功したかどうかを伝える方法を書くことができます... –

3

うん、あなたはファイルシステムにアクセスすることができます。しかし、あなた自身のアプリケーションサンドボックスに限られています。アプリのバンドルを変更することはできません。アプリの一部としてダウンロードするものはすべて変更できません(セキュリティ上の理由から、すべてのアプリに署名があるため)。しかし、あなたのアプリのDocumentsフォルダにファイルを保存することができます。

は、この講義を見てください、あなたが知る必要があるすべて説明:あなたはあなたのplistの中UIFileSharingEnabledキーがtrueとして設定した場合、お使いのMac上のiTunesを使用することができます

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/lectures/09_Data.pdf

+0

私は確かにここのAppleの動機はセキュリティではないと確信しています。 –

1

を追加のコーディングなしで、アプリケーションのサンドボックス化されたDocumentsディレクトリ内のファイルシステムを表示することができます。これは、あなたのキャッシュディレクトリを表示したり、アプリのサンドボックスの外を見たい場合には役に立ちません。

12

iDeviceのファイルシステムはサンドボックス化されていますが、iPhone Simulatorのファイルシステムはサンドボックス化されていません。シミュレータでアプリを実行し、内容を確認することができます:

~/Library/Application Support/iPhone Simulator/5.0/Applications 

これはあなたの必要に応じて動作するはずです。

+0

これはまさに私が探していたものです。ありがとうリズ! – rooftop

9

デバイスの場合:デスクトップアプリケーションを使用するiPhone-Explorer USB経由でファイルシステムを読み込みます(アプリケーション、音楽、写真、ビデオ、メモなど)を読み書きできますが、全体を読むことはできませんiPhoneSimulatorのためのシステムあなたが脱獄し、afc2addインストールしない限り)

(リズが述べたように):~/Library/Application Support/iPhone Simulator/5.0/Applications

+0

iExplorerがこれらにアクセスする方法を推測します。私は私のMacOSアプリケーションから自分のアプリケーション共有ドキュメントフォルダにアクセスする必要があります – Shohrab

1

は、sampleが持つことができます。あなたは一見を持つことができます。

1

あなたのiOSデバイスがコンピュータに接続され、正しくプロビジョニングされている場合は、Documentsディレクトリにあるファイルだけでなく、自分のプロジェクト用のファイルをXcode 4でダウンロードできます。

この他の回答を参照してください:How to download app data in Xcode 4.2

0

はいLMSは正しいです。 Appleはファイルアクセスをアプリ自体(Documentディレクトリ)に限定しています。だからそれにアクセスする他の方法はありません。私は自分のプロジェクトの1つでこの問題に直面し、フルファイルアクセスシステムの開発に着手しました。すべての操作はiFileのようにサポートされています。あなたは視覚的にiFileアプリと同様にすべてを行うことができます。

https://github.com/CianApple/FileSystem

私は、公共のためにgithubの上でプロジェクトを掲載しています。それを自由に使用してください。それはあなたの問題を助けるかもしれません。

0

itoolsは、iPhoneを保護するためのリンゴの取り組みのまわりで動作する小さなツールです。そのためにリンゴポリシーの一部を侵害するかもしれないが、仕事をする

関連する問題