我已经编写了一个Mac应用程序,它可以交叉引用各种输入文本和RTF文件来生成输出文件。该应用程序的一部分读取这些文件,从TXT或RTF文件中提取"具有语言意义"的字符,并将其发布以供进一步处理。
我正在使用以下方法。它很好用,但我想知道我是不是走了很长的路,还是做了一些完全不必要的事情。
inputdatafile = [NSString stringWithContentsOfFile: fullpath encoding: NSASCIIStringEncoding error:&error];
// test rtf wrapper code right here //
inputdataNSData=[inputdatafile dataUsingEncoding:NSUTF8StringEncoding];
wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:inputdataNSData];
rtfData = [[NSAttributedString alloc]
initWithRTF:[wrapper regularFileContents] documentAttributes:nil];
inputdatafilefromrtf = [rtfData string];
if (inputdatafilefromrtf) {
inputdatafile = [NSMutableString stringWithString:inputdatafilefromrtf];};
inputdatafile加载了一个文件的内容。该程序不知道它是什么类型的文本文件,并试图查看它是否为RTF。如果是,它将提取文件的内容以供进一步处理。如果不是,它会假设它是纯文本并使用它。
这可能是完全意外的,需要更新,或者可能有更好的方法来做到这一点。
任何人有任何想法都将不胜感激。
您可以像unix命令file那样尝试使用RTF幻数来识别文件类型,也可以使用libenca这样的库。
以下是对文件解析和幻数的一般解释。