4

当我运行以下代码时,写入磁盘的文件名最终如下所示:"MyFileName_2011-02-07_13/07/55.png"。我想保留冒号字符,而不是正斜杠。当我在控制台中使用 NSLog "fileName" 时,它看起来是正确的。我错过了什么?

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];

NSString *fileName = [NSString stringWithFormat:@"MyFileName_%@.png", dateString];

[myNSData writeToFile:fileName atomically:NO];
4

2 回答 2

10

文件名确实包含冒号;Finder 用斜杠替换它。

这是您无法使用冒号时的保留,因为它是 Mac OS 上的路径分隔符。现在,路径分隔符是斜线,因此是开关。

Finder 仍然不会让你输入冒号;如果您尝试输入一个斜杠,它会成功,但保存名称时用冒号代替。

几乎在其他任何地方,包括在 Cocoa 中,冒号都是有效的(不是路径分隔符),但斜杠不是。

于 2011-02-07T19:13:16.387 回答
2

在 Darwin(即 OS X 和 iOS)上的文件名中通常不可能包含该:字符。只需尝试重命名 Mac 上的文件以包含:. 该writeToFile:方法显然只是简单地替换非法字符而不是产生错误。

于 2011-02-07T18:29:07.533 回答