Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 访问/列出目标C中的隐藏文件_Objective C_Macos_File - Fatal编程技术网

Objective c 访问/列出目标C中的隐藏文件

Objective c 访问/列出目标C中的隐藏文件,objective-c,macos,file,Objective C,Macos,File,我正在使用以下剪贴画列出某个文件夹下的所有文件和目录: NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:directory]; for (NSString *file in directoryEnumerator) { NSString *filename; filename=file; filename= [directory

我正在使用以下剪贴画列出某个文件夹下的所有文件和目录:

NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:directory];


for (NSString *file in directoryEnumerator) {
    NSString *filename;
    filename=file;
    filename= [directory stringByAppendingPathComponent:file];
    processFile(filename);
}
遗憾的是,这不会列出/查找以句点开头的隐藏文件(或OSX创建的以“.”开头的文件)。到目前为止,我假设directoryEnumerator的标准行为是列出所有文件,除非我告诉它排除隐藏文件

有没有人有办法,如何实现所有文件都返回

谢谢
Norbert

我尝试了这个方法,它对我/tmp目录中的隐藏文件(
.hi-I-am-testing
)有效:

    NSString *directory = @"/private/tmp";

    NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:[NSURL fileURLWithPath:directory isDirectory:YES] includingPropertiesForKeys:nil options:0 errorHandler:^BOOL(NSURL *url, NSError *error) {

        if(error)
        {
            NSLog(@"error at file URL %@ - %@", [url absoluteString], [error localizedDescription]);
        }

        return NO;
    }];

    for (NSString *file in directoryEnumerator) {
        NSLog(@"%@", file);
    }

您正在使用的代码对于枚举目录来说似乎过于复杂<默认情况下,code>NSDirectoryEnumerator应显示
.hidden
目录,因为有一个选项(
NSDirectoryEnumerationSkipsHiddenFiles
)用于在需要时跳过隐藏文件

NSString *path = @"/Path/To/Enumerate";
NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] 
                                             enumeratorAtPath:path];

for (NSString *file in enumerator) {
    NSLog(@"%@", file);
}
结果:

.DS_Store
.hidden

您是否尝试过使用
EnumeratorURL:includingPropertiesForKeys:options:errorHandler:
而不是
EnumeratorPath:
?实际上,此代码列出了以句点开头的文件。但是,OSX创建的以“.”开头的文件未列出:-(知道如何保存这些文件吗?确实,此代码列出了以句点开头的文件。但是,OSX创建的以“.”开头的文件未列出:-(你知道我怎样才能保存这些文件吗?@Norbet,你到底指的是哪些文件?创建一个名为
。\u hidden
的文件的效果是一样的。OSX为文件夹中的每个文件创建这些隐藏文件。它显然在这些文件中存储了一些元数据。如果在目录中执行“ls-la”,你可以看到这些文件。但是,它们不是t由上述代码枚举:-(我不知道是什么使这些文件如此特殊。尽管它们没有扩展属性。@Norbert:
ls-la
没有给我这样的文件,但是,我想你可能是指连接到HFS+文件系统或网络共享时生成的文件?这是我唯一一次看到它们。