每当您将文本选择拖到Finder时,这些文件就会被创建。文件大小始终为0字节
。显然,数据存储在资源派生文件中。
我尝试读取资源派生文件[1],但出现错误代码-39
(文件结尾)。
以下是有关该文件的更多详细信息:
$>xattr test.textClipping
com.apple.FinderInfo
com.apple.ResourceFork
参考链接介绍了如何使用资源叉来处理Mac OS X上的文件。
每当您将文本选择拖到Finder时,这些文件就会被创建。文件大小始终为0字节
。显然,数据存储在资源派生文件中。
我尝试读取资源派生文件[1],但出现错误代码-39
(文件结尾)。
以下是有关该文件的更多详细信息:
$>xattr test.textClipping
com.apple.FinderInfo
com.apple.ResourceFork
参考链接介绍了如何使用资源叉来处理Mac OS X上的文件。
文本剪贴文件是一种老式的资源叉文件。您需要使用 FSOpenResourceFile
打开它,然后使用 Get1Resource
从文件中读取资源。该文件可能包含几种不同的文本资源类型:'RTF ' (富文本),'utxt' (UTF-8),'utf8' (UTF-8) 或 'TEXT' (ASCII) 类型的资源,所有这些资源的 id 都为 256。一旦读取资源,从 Handle 中提取数据并对其进行操作。
看起来在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"];
}