每当您将文本选择拖动到Finder时,都会创建这些文件。文件大小始终为0 bytes
。显然,数据存储在资源分支中。
我尝试读取资源fork [1],但得到错误代码-39
(文件结束)。
这里有一些关于该文件的更多细节:
$>xattr test.textClipping
com.apple.FinderInfo
com.apple.ResourceFork
答案 0 :(得分:4)
textClipping文件是旧式的资源fork文件。您需要使用FSOpenResourceFile
打开它,然后使用Get1Resource
从文件中读取资源。该文件可能包含文本的几种不同资源类型:'RTF'(富文本),'utxt'(UTF-8),'utf8'(UTF-8)或'TEXT'(ASCII)类型资源,所有id为256.读取资源后,从Handle中提取数据并按照您的需要进行处理。
答案 1 :(得分:2)
看起来在macOS 10.12 Sierra中,.textClipping文件现在是属性列表。
根词典有“UTI-Data”键。其中,键:com.apple.traditional-mac-plain-text,public.utf16-plain-text和public.utf8-plain-text包含几个不同的数据表示。
以下是从路径中读取的示例:
NSString *path = @"/path/to/file.textClipping";
NSData *data = [NSData dataWithContentsOfFile:path];
id plist = [NSPropertyListSerialization propertyListWithData:data options:0 format:nil error:&error];
NSString *text;
if (plist && error == nil) {
NSDictionary *utiData = [plist objectForKey:@"UTI-Data"];
text = [utiData objectForKey:@"public.utf8-plain-text"];
}
答案 2 :(得分:1)
查找 FSOpenFork 和 FSReadFork 。 (Apple有一个名为AudioCDSample的代码示例。)
还有一个可以读取这些文件的命令行工具( / usr / bin / DeRez ),你可能想在GDB下查看它,但是从我看过它使用已弃用的API(即 FSRead 代替 FSReadFork )。