【问题标题】:Is a filename valid文件名是否有效
【发布时间】:2011-06-16 12:05:24
【问题描述】:

我如何知道一个文件名在目标 c 中是否有效?我在 NSString "Working with Paths" 任务中找不到任何东西,而且我认为手动正则表达式不是正确的方法。

【问题讨论】:

  • 肯定任何字符串都是有效的文件名 - HFS+ 使用 Unicode
  • 甚至 aaa/aaa?这将被视为一个目录
  • @Mark:我知道我可以在我的 Mac 上将文件重命名为它,但是如何保存名为 aaa/aaa 的文件?它将尝试将名为aaa 的文件保存在名为aaa 的文件夹中。即使使用stringByAppendingPathComponent 也会保持原样。
  • 如果你有文件夹 aaa 会起作用 - 所以你不能只从字符串中分辨出来
  • 这个答案对我有用:stackoverflow.com/questions/1281576/…

标签: objective-c path


【解决方案1】:

实际上很难知道文件名是否有效。最好的办法是尝试您想要对其执行的操作并处理错误。例如,如果您想读取文件,请将其打开以进行读取。如果文件对此无效,则打开将失败。

编辑

如果你想限制用户选择当前目录中的路径,你可以这样做:

NSArray* pathComponents = [string pathComponents];

if ([pathComponents count] != 1)
{
    // error
}

【讨论】:

  • 我希望我的用户输入一个文件名。如果他们输入类似../../../../veryDangerusFile 的内容,我不希望程序运行松散。我希望它根本不允许更改目录。
  • 为什么不只是 if ([string rangeOfString:@"/"].location != NSNotFound) { // error }..?数组拆分只是为了查看 / 是否存在似乎是多余的。
  • @Kalle:我不喜欢明确假设路径分隔符是/。最好使用正确的文件系统路径操作代码。
  • 我猜如果您正在编写有意义的多平台代码,是的。 (我不是。)
猜你喜欢
  • 1970-01-01
  • 2020-08-20
  • 2010-11-21
  • 1970-01-01
  • 2010-12-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多