重命名 NSLibraryDirectory 中的所有文件和目录

Posted

技术标签:

【中文标题】重命名 NSLibraryDirectory 中的所有文件和目录【英文标题】:Renaming all files and directories in NSLibraryDirectory 【发布时间】:2014-03-17 11:55:59 【问题描述】:

如何将NSLibraryDirectory\myFolder中的所有文件和目录重命名为小写?

我发现我可以使用:

[[NSFileManager defaultManager] moveItemAtPath:oldPath toPath:[oldPath lowercaseString] error:&error];

重命名目录。

NSArray *directoryContent = [fileManager contentsOfDirectoryAtPath:path error:nil];

获取包含目录内容的数组,但如何检查directoryContent[0] 是目录还是文件。

【问题讨论】:

【参考方案1】:

您可以使用它来检查 NSUrl 是目录还是文件:

for (NSURL *item in directoryContent) 
    NSString *path = [item path];
    BOOL isDir;
    if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir]) 
        if (isDir) 
            NSLog(@"%@ is a directory", path);
         else 
            NSLog(@"%@ is a file", path);
        
     else 
        NSLog(@"%@ does not exist", path);
    

更新:

要重命名目录的所有内容,您可以使用:

NSArray *directoryContent = [fileManager contentsOfDirectoryAtPath:path error:nil];
BOOL isDir;
for (NSURL *item in directoryContent) 

    if ([[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir]) 
        if (isDir) 
            // create a new directory with lowercase name,
            // move contents of old directory to the new one
            // then delete the old directory
         else 
            [[NSFileManager defaultManager] moveItemAtPath:path toPath:[path lowercaseString] error:&error];
        
    

【讨论】:

知道文件的 isDirectory 有好处,但我需要递归重命名所有文件和目录为小写 用代码更新了我的答案以重命名目录的内容【参考方案2】:

//Call [self purgeDirectory:__NSLibraryDirectoryPath];


+(void)purgeDirectory:(NSString *)directoryPath __deprecated_msg("For debug purposes only") 
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *directoryContent = [fileManager contentsOfDirectoryAtPath:directoryPath error:&error];
    for (NSString *itemPath in directoryContent) 
        BOOL isDir;
        if ([[NSFileManager defaultManager] fileExistsAtPath:itemPath isDirectory:&isDir]) 
            if (isDir) 
                [self purgeDirectory:itemPath];//subdirectory
             else 
                [[NSFileManager defaultManager] removeItemAtPath:itemPath error:&error];
            
        
    

【讨论】:

以上是关于重命名 NSLibraryDirectory 中的所有文件和目录的主要内容,如果未能解决你的问题,请参考以下文章

apt无法重命名文件

[重命名应用程序中的树节点时重命名文件夹名称

如何重命名SAS中的所有变量?

sh 重命名shell中的链接文件对。通过多对链接文件名重命名。

重命名目录中的所有文件?

根据路径中的模式重命名文件