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+文件系统或网络共享时生成的文件?这是我唯一一次看到它们。