[英]OSX directory with spaces
我在打开包含空格的目录时遇到问题。 我的代码看起来像这样:
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseDirectories:YES];
if ( [openDlg runModal] == NSOKButton )
{
NSArray* files = [openDlg URLs];
NSString* directoryName = [[files objectAtIndex:0] absoluteString];
directoryURL = [files objectAtIndex:0];
NSLog(@"Directory Name: %@", directoryName);
NSArray *directoryArray = [directoryName componentsSeparatedByString:@"/"];
NSString* currentDirectory = [directoryArray objectAtIndex:(directoryArray.count- 2)];
[directoryBox setTitle:currentDirectory];
}
当我选择带空格的目录名时,文件不会显示在表中,NSLog中的输出如下所示:
目录名称:
file://localhost/Users/Rich/Software%20Bisque/
有任何想法吗?
所述-URLs
的方法NSOpenPanel
返回的实例NSURL
,不是文件系统路径。 虽然NSURL
已经成为引用文件的首选方式,但您可以使用NSURL
的-path
方法轻松更改为文件系统路径。
请注意,有许多特定于处理NSPathUtilities.h
中添加到NSString
文件系统路径的方法。 您可能可能会重写您的代码以合并它们(仔细检查我的目标目录是否正常):
NSArray* files = [openDlg URLs];
NSString* directoryName = [[files objectAtIndex:0] path];
directoryURL = [files objectAtIndex:0];
NSLog(@"Directory Name: %@", directoryName);
// NSArray *directoryArray = [directoryName pathComponents];
// NSString* currentDirectory = [directoryArray objectAtIndex:(directoryArray.count- 2)];
NSString *currentDirectory = [[directoryName stringByDeletingLastPathComponent]
lastPathComponent];
[directoryBox setTitle:currentDirectory];
您可以尝试删除directoryName
字符串中的百分比转义 - 我认为系统不需要它们。 就像是:
directoryName = [directoryName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.