4

以下の例では、m3u プレイリストからリンクを取得し、それを anArray に追加する必要があります。NSArray(NSMutableArray)(そのため、特定のリンクを含むを取得します)

NSString *fileContents = [NSString stringWithContentsOfFile:@"myfile.m3u" encoding:NSUTF8StringEncoding error:NULL];
NSArray *lines = [fileContents componentsSeparatedByString:@"\n"];
NSLog (@"%@",lines);

NSLog Message にずっと (null) がありました。NSLog または if/else ステートメントをチェックしようとすると、配列にリンクがあるかどうかを確認するたびに、null オブジェクトが返されます。

その後、問題はm3uタイプにあると思い、txtのタイプを変更して読み取ろうとしました。(知らない人のために言うと、M3U は UTF-8 エンコーディングの単なるテキストであり、型を変更すると結果が得られるはずです) 次に、.txt ファイルを試してみましたが、うまくいきません。だからそれのコードがあります。

//Check if there is my file
NSString *addPath = [[NSBundle mainBundle]  pathForResource:@"somefile" ofType:@"m3u" ];
if ([fileMgr fileExistsAtPath:addPath] ) {
    NSLog(@"Yes.We see the file");
}
else {
    NSLog(@"Nope there is no file");
}
//Rename
NSString *path1 = addPath;
NSString *theNewFilename = [path1 stringByReplacingOccurrencesOfString:@"m3u" withString:@"txt"];
NSLog(@"Renamed file adress is %@", theNewFilename); 
   
//Check if there is our renamed file(file manager was allocated before) 
NSString *addPath1 = [[NSBundle mainBundle]  pathForResource:@"somefile" ofType:@"txt" ];
if ([fileMgr fileExistsAtPath:addPath1] ) {
    NSLog(@"Yes we had the renamed file");
}
else {
    NSLog(@"No we don't");
}

m3uファイルが正常に機能していることを確認しています。名前を変更したファイルへのアドレスもありました。しかし、名前が変更されたファイルがあるかどうかを確認していたときに、ファイルがありませんでした (NSLog で null)。すべてのことの後、目的地に到達する希望がなく、5つのリンクを含む /n で区切られたtxtファイルを1行ずつ読み取ろうとしました。

NSString *fileContents1 = [NSString stringWithContentsOfFile:@"myfile.txt" encoding:NSUTF8StringEncoding error:NULL];
NSArray *lines1 = [fileContents1 componentsSeparatedByString:@"\n"];
NSLog (@"%@",fileContents1);
NSLog (@"%@",lines1);

両方のメッセージが NULL でした -(IBAction)fileRead { } で作成しようとしたすべてのものがボタンにリンクされました (はい、NSLog を確認するたびにボタンを押しました) プログラムは iPhone シミュレーターで確認されました。誰かが何が問題なのか言ってくれたら嬉しいです。また、URLでこれを作成する簡単な方法がある場合. (NSUrlで数回試してみましたが、 null しかありませんでした)

4

1 に答える 1

4

パスを変更したからといって、アイテムの名前を変更/移動/コピーしたことを意味するわけではありません。パスは単なる文字列です。NSFileManager次のような方法を使用します

– moveItemAtURL:toURL:error:また

– moveItemAtPath:toPath:error:.

また、NSString は拡張子を気にしないため、m3u ファイルを NSString に読み取っても完全に安全です。名前を変更する必要はありません。

NSString *addPath = [[NSBundle mainBundle]  pathForResource:@"somefile" ofType:@"m3u" ];
if ([fileMgr fileExistsAtPath:addPath] ) {
    NSLog(@"Yes.We see the file");
    NSString *fileContents1 = [NSString stringWithContentsOfFile:addPath encoding:NSUTF8StringEncoding error:NULL];
    NSArray *lines1 = [fileContents1 componentsSeparatedByString:@"\n"];
    NSLog (@"%@",fileContents1);
    NSLog (@"%@",lines1);
}
else {
    NSLog(@"Nope there is no file");
}
于 2012-06-06T12:45:35.457 に答える