使用NSData方法“writeToFile:atomically:”时如何在文件名中保留冒号字符?

时间:2011-02-07 18:20:34

标签: cocoa file-io nsdata nsdateformatter colon

当我运行以下代码时,在磁盘上写入的文件名最终会像这样:“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];

2 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:2)

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