1

我正在使用该writeToFile:atomically:方法将一些加密数据写入文本文件。问题是,它需要保存的文件必须是用户加密的文件,并带有我选择的扩展名。这是我到目前为止所拥有的:

[encryptedData writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] 
    stringByAppendingPathComponent:@"encryptedfile.txt.kry"] atomically:YES];
                                           ^//fileName here

如您所见,加密文件名被硬编码为 encryptedfile.txt.kry。但是假设用户选择文件“test.avi”进行加密,写入桌面的加密文件应该命名为test.avi.kry。所以应该有 ofType:,就像在 NSBundle 中一样。我知道这里有一些我可以使用的 NSString 方法,但已经忘记了。

谢谢!

4

1 回答 1

1

您不能将 .kry 附加到文件名上吗?

如果您有路径,并且只想要文件名,则可以使用- (NSString *)lastPathComponent

NSString *filename = [filePath lastPathComponent];
[encryptedData writeToFile:[[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop"] 
    stringByAppendingPathComponent:[filename stringByAppendingString:@".kry"] atomically:YES];

如果您想要没有扩展名的文件名,您可以使用- (NSString *)stringByDeletingPathExtension

NSString *filename = [[filePath lastPathComponent] stringByDeletingPathExtension];
于 2011-09-04T04:34:13.573 回答