macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

stringWithContentsOfFile:usedEncoding:error:

INDEX>Foundation>NSString>

指定したファイルの内容からエンコーディングを自動判別してエンコーディングと文字列を返します
+(id)stringWithContentsOfFile:(NSString *)path
             usedEncoding:( NSStringEncoding * )enc
             error:(NSError **)error

解説

指定したファイルの内容からエンコーディングと文字列を返します。
10.4以降はstringWithContentsOfFile:を使わず、このメソッドを使います。

自動判別といっても、期待通りに判別できないことがあります。

返り値

( id )

オブジェクト()

引数

( NSString * )path

ファイルパス

( NSStringEncoding * )enc

使われているエンコード

( NSError ** )error

エラーを返すエラーオブジェクト

クラス

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;
            }
            
        }
    }];
    
    
}