繁体   English   中英

带空格的OSX目录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM