0

重複の可能性:
Objective-Cを使用してプログラムでテキストファイルを読み取る

次のコード行を使用しています::

- (void)sync:(NSString *)savedName{

NSLog(@"saved name is this :: %@", savedName);

NSString *savedDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName];
saveFilePath = [saveFilePath stringByAppendingPathComponent:@"edit.txt"];

NSString *saveString = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, saveFilePath);
}

内容edit.txtは:

= WWWW =
[[Category:ssss]]

私がやろうとしているのは、ファイルから読み取り、edit.txtその内容を文字列に格納することです。ただし、NSLoggingでは、を取得nullsaveStringます。

gdb::で次の出力が得られました

splitView[838:f803] saveString is :: (null) savedName : xxxx savefilepath : /Users/xxxx/Library/Application Support/iPhone Simulator/5.1/Applications/D4B3A4CF-E7D0-4D25-B3D3A170A329/Documents/xxxx/edit.t‌​xt`

誰かが私がエラーを整理するのを手伝ってもらえますか?私はそれを理解することができません。よろしくお願いします。

4

4 に答える 4

1

TXTファイルへのパスが間違っていると思います。あなたが構築している方法をチェックしてください saveFilePath、多分:

NSString *savedDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName];
saveFilePath = [saveFilePath stringByAppendingPathComponent:@"edit.txt"];
于 2012-07-03T08:04:50.383 に答える
1

試してみる場合:

NSString *savedDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *saveFilePath = [savedDir stringByAppendingPathComponent:savedName];
//Why do you do that ? saveFilePath = [savedDir stringByAppendingPathComponent:@"edit.txt"];

NSString *saveString = [NSString stringWithContentsOfFile:saveFilePath encoding:NSUTF8StringEncoding error:nil]; 

NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, saveFilePath);
于 2012-07-03T08:07:01.987 に答える
1

ドキュメントにedit.txtファイルが含まれているかどうかを確認してください。

編集:

- (void)sync:(NSString *)savedName{

    NSString *filePath = [self applicationDocumentsDirectory];
    filePath = [filePath stringByAppendingPathComponent:@"license.txt"];
    NSString *saveString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil]; 

    NSLog(@"saveString is :: %@ savedName : %@ savefilepath : %@", saveString, savedName, filePath);
}

license.txtのパスは次のとおりです。/Users/nuzhat.zari/Library/ApplicationSupport/iPhoneSimulator/5.0/Applications/9BFCE2B5-C976-4EF6-91DF-DA4ABCD04788/Documents。

ファイルパスもこれに類似していることを確認してください。

于 2012-07-03T08:07:12.380 に答える
1

では、.txtファイルからデータを読み取るために使用したものは次のとおりです。

NSString *path;
path = [[NSBundle mainBundle] pathForResource: YOUR_TEXT_FILE_NAME ofType: @"txt"];

NSStringリターンオブジェクトとして返されるファイルを読み取る関数になりました。この関数の呼び出しは次のとおりです

NSString *data = [self readFile: path]];

今関数

-(NSString *)readFile:(NSString *)fileName

{
    NSLog(@"readFile");

    NSString *appFile = fileName;    
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:appFile])        
    {
        NSError *error= NULL;
        NSString *resultData = [NSString stringWithContentsOfFile: appFile encoding: NSUTF8StringEncoding error: &error]; 
        if (error == NULL)            
            return resultData;
    }
    return NULL;
}

これがお役に立てば幸いです

ハッピーコーディング:)

于 2012-07-03T08:54:23.950 に答える