stringWithContentsOfFile:usedEncoding:error:
指定したファイルの内容からエンコーディングを自動判別してエンコーディングと文字列を返します
+(id)stringWithContentsOfFile:(NSString *)path usedEncoding:( NSStringEncoding * )enc error:(NSError **)error
解説
指定したファイルの内容からエンコーディングと文字列を返します。
10.4以降はstringWithContentsOfFile:を使わず、このメソッドを使います。
自動判別といっても、期待通りに判別できないことがあります。
返り値
( id )
オブジェクト()
引数
( NSString * )path
ファイルパス
( NSStringEncoding * )enc
使われているエンコード
( NSError ** )error
エラーを返すエラーオブジェクト
フレームワーク
Foundation
クラス
NSString
Class Methods
使用可能
10.4
参照
-initWithContentsOfFile:encoding:error:
例文
#pragma mark iOS NSString stringWithContentsOfFile:usedEncoding:error -(NSString *)encodeString:(NSStringEncoding)encoding { switch (encoding) { case NSASCIIStringEncoding: return @"NSASCIIStringEncoding"; case NSNEXTSTEPStringEncoding: return @"NSNEXTSTEPStringEncoding"; case NSJapaneseEUCStringEncoding: return @"NSJapaneseEUCStringEncoding"; case NSUTF8StringEncoding: return @"NSUTF8StringEncoding"; case NSISOLatin1StringEncoding: return @"NSISOLatin1StringEncoding"; case NSSymbolStringEncoding: return @"NSSymbolStringEncoding"; case NSNonLossyASCIIStringEncoding: return @"NSNonLossyASCIIStringEncoding"; case NSShiftJISStringEncoding: return @"NSShiftJISStringEncoding"; case NSISOLatin2StringEncoding: return @"NSISOLatin2StringEncoding"; case NSUnicodeStringEncoding: return @"NSUnicodeStringEncoding"; case NSWindowsCP1251StringEncoding: return @"NSWindowsCP1251StringEncoding"; case NSWindowsCP1252StringEncoding: return @"NSWindowsCP1252StringEncoding"; case NSWindowsCP1253StringEncoding: return @"NSWindowsCP1253StringEncoding"; case NSWindowsCP1254StringEncoding: return @"NSWindowsCP1254StringEncoding"; case NSWindowsCP1250StringEncoding: return @"NSWindowsCP1250StringEncoding"; case NSISO2022JPStringEncoding: return @"NSISO2022JPStringEncoding"; case NSMacOSRomanStringEncoding: return @"NSMacOSRomanStringEncoding"; case NSUTF16BigEndianStringEncoding: return @"NSUTF16BigEndianStringEncoding"; case NSUTF16LittleEndianStringEncoding: return @"NSUTF16LittleEndianStringEncoding"; case NSUTF32StringEncoding: return @"NSUTF32StringEncoding"; case NSUTF32BigEndianStringEncoding: return @"NSUTF32BigEndianStringEncoding"; case NSUTF32LittleEndianStringEncoding: return @"NSUTF32LittleEndianStringEncoding"; default: return @"Unknown Encoding"; } } -(void)method019 { NSBundle *bundle = [NSBundle mainBundle ]; NSString *resourcePath = [bundle resourcePath]; NSString *filePath1 = [resourcePath stringByAppendingPathComponent:@"Textfile.txt"]; NSLog(@"%s : %@",__FUNCTION__ ,resourcePath); NSError *error; NSStringEncoding encoding; NSString *output1 = [[NSString alloc] initWithContentsOfFile:filePath1 usedEncoding:&encoding error: &error]; NSLog(@"%s %p , encode= %@ , %@ ",__FUNCTION__,output1,[self encodeString:encoding],output1); //=>-[OOOAppDelegate method019] 0x199580 , encode= NSUTF8StringEncoding , Sample Text }
#pragma mark stringWithContentsOfFile:encoding:error: - (void)displayText031:(NSString *)text { self.fileString = text; NSLog(@"text %@",text); } -(void)method031 { //FileSystem programming guide //http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/FileSystemProgrammingGUide/UsingtheOpenandSavePanels/UsingtheOpenandSavePanels.html //OpenPanelを作る NSOpenPanel *opPanel = [ NSOpenPanel openPanel ]; //OpenPanelでファイル選択 //This way is 10.6 or later [opPanel setCanChooseDirectories:YES]; [opPanel setAllowsMultipleSelection:YES]; [opPanel setPrompt:NSLocalizedString(@"prompt text", nil)]; [opPanel setMessage:@"Message"]; [opPanel beginWithCompletionHandler:^(NSInteger result){ if (result == NSFileHandlingPanelOKButton) { NSURL* theDoc = [[opPanel URLs] objectAtIndex:0]; // Open the document. NSError *error = nil; NSStringEncoding encoding = 0; NSString *output = [NSString stringWithContentsOfFile:[theDoc path] usedEncoding: &encoding error: &error]; [self performSelectorOnMainThread:@selector(displayText031:) withObject:output waitUntilDone:NO]; switch (encoding) { case NSASCIIStringEncoding: NSLog(@"NSASCIIStringEncoding"); break; case NSNEXTSTEPStringEncoding: NSLog(@"NSNEXTSTEPStringEncoding"); break; case NSJapaneseEUCStringEncoding: NSLog(@"NSJapaneseEUCStringEncoding"); break; case NSUTF8StringEncoding: NSLog(@"NSUTF8StringEncoding"); break; default: NSLog(@"%lu",encoding); break; } } }]; }