10

アプリの起動時にファイルを読み取り、使用中に時々書き込む必要があるため、次の方法でアクセスしようとしました。

NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];
NSLog(@"%@",dataFile);

そして、私のプロジェクトフォルダーにあるはずのファイルは、代わりにシミュレーターフォルダーにあります:

2012-06-13 17:36:56.398 MyFileApp[610:15203] /Users/Rob/Library/Application Support/iPhone Simulator/5.1/Applications/1FFD4436-DCCA-4280-9E47-F6474BEE0183/MyFileApp.app/myFile.txt

実際のデバイスだけでなく、シミュレータを使用して読み書きしたい場合はどうすればよいですか?

アドバイスをありがとう

4

4 に答える 4

24

バンドルからファイルを読み取るには、次のようにします。

NSString *dataFile = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"txt"];

サンドボックス ストレージ (ドキュメント) から読み取るには

NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/YourFile.txt"];
NSString *dataFile = [NSString stringWithContentsOfFile:docPath 
                                           usedEncoding:NSUTF8StringEncoding 
                                                  error:NULL];

ドキュメントフォルダに書き込むには

NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/YourFile.txt"];
[dataFile writeToFile:docPath 
          atomically:YES 
            encoding:NSUTF8StringEncoding 
               error:NULL];

アプリケーションのバンドル フォルダにファイルを書き込むことはできませんのでご注意ください。

于 2012-06-18T07:40:28.557 に答える
2

ファイルテキストを読み書きするために必要なものは次のとおりです。

ファイルを書きます:

-(void) writeStringToFile:(NSString *)aString{
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *fileName = @"textFile.txt";
    NSString *fileAtPath = [filePath stringByAppendingString:fileName];
    if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) {
        [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil];
    }
    [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO];
}

ファイルを読み取ります。

-(NSString *)readStringFromFile{
    NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *fileName = @"textFile.txt";
    NSString *fileAtPath = [filePath stringByAppendingString:fileName];
    return [[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding];
}

最後に、次の場所でコードをテストしますviewDidLoad

    NSString *text = @"I'm an iOS developer and I'm living at HCM city";
    [self writeStringToFile:text];
    NSString *strResult = [self readStringFromFile];
    NSLog(@"%@", strResult);
于 2014-10-29T07:28:07.113 に答える
1

書き込みファイルの場合、Foundation フレームワークにリンクすると、これらのメソッドを-[NSData writeToURL:atomically:]使用-[NSString writeToURL:atomically:encoding:error:]できます。

ファイルを読み取るためのメソッドは-[NSData initWithContentsOfURL:options:error:]-[NSString initWithContentsOfURL:encoding:error:]です。

于 2012-06-18T07:44:25.833 に答える