2

私は自分のNSTaskためにファイルを解凍しようとしています。パスにスペースが含まれていない場合、これは正常に機能しますが、スペースがある場合、ファイルが見つかりません。"システムによって割り当てられた一時フォルダーに zip ファイルを保存しているため、標識をハードコーディングできません。

これを達成する方法を知っている人はいますか?

これが私のコードです:

NSTask*task = [[NSTask alloc] init];

[task setLaunchPath:@"/usr/bin/unzip"];

NSArray*arguments = [NSArray arrayWithObjects:zipPath,@"-d",path,nil];

[task setArguments:arguments];

[task launch];

[task release];
4

3 に答える 3

2

引用符を埋め込めないのはなぜですか?

NSString *quotedPath = [NSString stringWithFormat:@"\"%@\"", path];
NSArray *arguments = [NSArray arrayWithObjects:zipPath, @"-d", quotedPath, nil];
于 2011-03-06T16:29:52.870 に答える
0

引数にスペースを含めることは問題のようには見えません。コンソールにスペースが付いたパス名が表示されていることに注意してください。スペースを含む引数は単一の引数として渡されます。@"aspace.zip"が正常に解凍されることを確認しました。ファイルが存在すると思われる場所にファイルが存在し、アクセスできることを確認しましたか?

于 2011-03-06T19:28:31.593 に答える
0

NSStringの- (NSArray *)pathComponentsメソッドを使用してパスコンポーネントを解析し、必要に応じて引用符を追加してから、次を使用して文字列を再構築 できますか(NSString *)pathWithComponents:(NSArray *)components

それは動作しますか?

于 2011-03-06T17:48:38.090 に答える