2012-02-08 8 views
13

私は非常に単純なコードでtxtファイルを読んでいます。問題は、ログの文章ではファイルのパスしか取得できないが、内容はnullだということです。私は問題が私のテキストファイルを読む方法に関するpart.Any提案をエンコーディングにあると思う。iosでテキストファイルを読む方法

NSStringEncoding encoding; 
NSString* content; 
NSString* path = [[NSBundle mainBundle] pathForResource:@"colorpalette" ofType:@"txt"]; 
if(path) 
{            
content = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:NULL]; 
} 
NSLog(@"path is %@",path); 
if (content) 
{ 
    NSLog(@" content of file is %@",content); 
} 
+1

どの方法によって提供さ 'ERROR'を読んでどうですか? – cweinberger

+0

エラーパラメータを使用して、NULLを渡す代わりに返されるエラーを確認できます。 –

+0

Joachim Isakssonエラーが発生しました "オペレーションを完了できませんでした – Shubham

答えて

15

ここでは、エンコーディングパラメータが正しく設定されていません。

は、私はあなたが機能「をstringWithContentsOfFile」を渡しているエンコーディングを得ることはありません。この

NSString* content = [NSString stringWithContentsOfFile:path 
               encoding:NSUTF8StringEncoding 
               error:NULL]; 
NSLog(@"%@",path); 
+1

これはオプションです(エンコードを知っている方が良いでしょう)。しかしstringWithContentsOfFile:usedEncoding:error:_is_わからない場合は完全に有効なオーバーロード –

+0

私は間違いを見つけました。実際にテキストファイルを保存した時点で、私はテキストを西洋(Mac OS Roman)にエンコードしました。これはutf-8でなければなりません。 – Shubham

+0

あなたは "NSLog(@"%@ "、コンテンツ)を意味します。パスではなく –

1

を試してみてください。 "NSUTF8StringEncoding"を渡してみてください。これで問題が解決しない場合は、NSErrorインスタンスを作成し、関数に参照渡しします。

6

は、バンドルからテキストファイルを読むために、次のコードを使用します

NSError *error; 
NSString *strFileContent = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] 
    pathForResource: @"FileName" ofType: @"txt"] encoding:NSUTF8StringEncoding error:&error]; 

if(error) { //Handle error 

} 

NSLog(@"File content : %@ ", strFileContent); 
関連する問題