2

Object Bankresources フォルダー内のdirectory に配置されたファイルを読み込もうとしています。

//Get path for file in object bank
NSString* path = [[NSBundle mainBundle] pathForResource:fileId ofType:@"eam" inDirectory:@"Object Bank"];
NSError *error=nil;

//Check if it is present at the location
Boolean prepositioned=[[NSFileManager defaultManager] fileExistsAtPath:path];
NSLog(@"File Found : %@",prepositioned?@"Yes":@"No");

//This outputs "File Found : Yes"

//Read file
NSString *fileContents=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
NSLog(@"Prepostioned content length: %d",fileContents.length);
//This outputs "Prepostioned content length: 0"

//if file is present:
if (!error) {
    //Do something

}
else
{   
    //Print the error
    NSLog(@"Error : %@",error.description);
}

次のエラーが表示されます。

Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x8c410d0 {NSFilePath=/Users/ctb/Library/Application Support/iPhone Simulator/6.0/Applications/16881651-3790-4C87-A3A0-1E1D60563684/OAS IPAD.app/Object Bank/70118600.eam, NSStringEncoding=4}

nilファイルが存在しない場合でもパスは返されfileExistsAtPath:pathず、ファイルが存在するかどうかに関係なく常に yes が返されます。

私もこれを試しました:

NSArray *paths =[[NSBundle mainBundle] pathsForResourcesOfType:@"eam" inDirectory:@"Object Bank"];
for (NSString *path in paths) {
    NSString *fileString=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"Resource : %u ",fileString.length);
}

しかし、同じ問題があります。

4

3 に答える 3

0

読み取るファイルが NSUTF8StringEncoding であることを絶対的かつ積極的に確認してください。そうしないと、このタイプのエラーが発生し、エンコーディングの不一致が原因で読み取られなかったと誤解を招く可能性があります。

TextWrangler でファイル (タイプ eam の fileId) を開き、エンコーディングを確認してから、エンコーディング パラメータでそのエンコーディングを使用します。

于 2015-06-06T00:08:34.190 に答える
0

あなたはResourcesフォルダから読んでいません。Object Bankディレクトリから読み取ろうとしています。ファイルがそこに存在しないため、戻るnilことは理にかなっています。

NSString *filePath = [[NSBundle mainBundle] pathForResource:fileId ofType:@"eam" inDirectory:@"Object Bank"];

NSFileManager *fileManager = [NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:filePath]) {
        NSLog(@"file exist");
    }

pk以下は、リソース ディレクトリから名前が付けられたテキスト ファイルを読み込もうとしたスクリーンショットです。それが役に立てば幸い。幸せなコーディング:-)

スクリーンショット

于 2013-01-25T06:35:29.237 に答える