【问题标题】:how to distinguish files from directories in moveItemAtPath:toPath:error: method如何在 moveItemAtPath:toPath:error: 方法中区分文件和目录
【发布时间】:2011-08-04 14:00:18
【问题描述】:

这个方法的声明是: - (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString )dstPath 错误:(NSError *)error 它的文档说源路径可以是文件名或目录名,假设我们在当前工作目录中有一个名为“test”的文件和一个名为“test”的子目录,调用该方法后: [fm moveItemAtPath:@"test" toPath:@"newTest" error:null];

其中 fm 是 NSFileManager 类的对象,哪些项目将被重命名:文件或目录?这个方法是如何区分文件和目录的?

附言据我所知,如果源路径和目标路径相同,则此方法会重命名,在这种情况下,源路径 = 目标路径 = 当前工作目录。

【问题讨论】:

  • 你的目标操作系统是什么? Mac OS X 和 iOS (HFS) 中使用的文件系统,不允许创建同名文件和目录
  • 目标操作系统是 Windows 7 ...我现在明白了,正如@sidyll 所说,如果我提供“文件”作为参数,该方法会将其视为目录,如果提供“文件”。 txt" 它会将其视为文件。

标签: objective-c


【解决方案1】:

正如@stam 所说,您不能创建同名的文件和文件夹(请记住file.txtfile 不同)。

但是,如果你想知道一个路径代表一个目录还是一个文件,使用下面的方法:

- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory

喜欢:

BOOL isDir;
if ([fm fileExistsAtPath:path isDirectory:&isDir]) {
    // Item Exists
    if (isDir) {
        // Is a directory
    } else {
        // Is a file
    }
} else {
    // Item doesn't exist
}

【讨论】:

    猜你喜欢
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多