【问题标题】:Objective-C Hidden filesObjective-C 隐藏文件
【发布时间】:2013-07-27 22:51:10
【问题描述】:

我需要两种方法:一种用于了解文件是否隐藏,另一种用于将文件设置为隐藏。我没有在开发者文档中得到答案...

有人吗?

非常感谢! 杰罗姆

【问题讨论】:

标签: objective-c file hidden


【解决方案1】:

以“.”开头的文件默认情况下会隐藏在 Finder 中,因此您可以测试文件是否以点开头,例如:

NSString* filename = //Something
if([string hasPrefix:@"."]) {
  //The file is hidden
}

要使文件不可见,您可以重命名文件,并在名称前加上句点。

【讨论】:

  • 当然,但是任何文件都有“隐藏”属性吗?
  • 是的,there is,@user2600797。
  • @user2600797 实际上这不是文件属性,而是 shell/BSD 通用线的东西。在文件属性列表中,我还没有找到“隐藏”属性。只有 unix 约定不显示在 UI 中(或者如果您认为终端是某种 UI,则为 ls)名称以点开头的文件。
【解决方案2】:

您可以使用NSFileManager 列出目录中的文件。

NSURL *directoryURL = [NSURL fileURLWithPath:(NSString*)path];

NSArray *filteredContents = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:directoryURL
         includingPropertiesForKeys:[NSArray arrayWithObject:NSURLNameKey]
                            options:NSDirectoryEnumerationSkipsHiddenFiles
                              error:nil];

指定NSDirectoryEnumerationSkipsHiddenFiles 选项后,它将跳过目录中的所有隐藏文件。然后,您可以执行类似的方法,即返回目录中的所有文件。

NSArray *allContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:(NSString *path) error:nil];

allContents 中没有 filteredContents 中的任何文件都可能是隐藏文件。

【讨论】:

  • 但这无助于编写所需的方法:一个告诉您是否隐藏单个文件(或者您是否推荐比较父目录的 2 次迭代的技巧,只是为了查看特定文件是否隐藏?)以及如何隐藏文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多