我想从文本文件中读取整数列表,我只想编写类似的代码
int temp;
fin>>temp;
但是当我阅读 Cocoa 文档时,我发现建议使用NSFileHandle,并且没有我假设的方法,只有一个相关方法:
- (NSData *)readDataOfLength:(NSUInteger)length
是否有任何类/方法可以帮助我在 Objective C 中做到这一点?谢谢。
我想从文本文件中读取整数列表,我只想编写类似的代码
int temp;
fin>>temp;
但是当我阅读 Cocoa 文档时,我发现建议使用NSFileHandle,并且没有我假设的方法,只有一个相关方法:
- (NSData *)readDataOfLength:(NSUInteger)length
是否有任何类/方法可以帮助我在 Objective C 中做到这一点?谢谢。
我想从文本文件中读取整数列表,我只想编写类似的代码
国际温度;鳍>>温度;
对于文件访问,您有很多选择。如果你想使用 C++ 风格的访问,你可以,但你自然需要使用适当的 C++ 文件或流方法打开文件。但是,如果您使用 Objective-C++,您可以轻松地将 C++ 代码混合到您的 Objective-C 中。
您还可以使用 C 标准库文件例程,如 fopen()、fread() 等。
如果文件来自您的程序以外的其他来源,那么使用 C 或 C++ 读取文件通常是一个不错的选择,这超出了您的控制范围。
但是当我阅读 Cocoa 文档时,我发现建议使用 NSFileHandle,并且没有我假设的方法,只有一个相关方法:
再次,有很多选择。是的,您可以使用 NSFileHandle 将文件中的字节读取到 NSData 对象中,然后您可以从数据对象中获取字节范围。但是,一种更常见的写入和读取数据的方法是使用 NSKeyedArchiver 和 NSKeyedUnarchiver:
NSData *data = [NSData dataWithContentsOfFile:pathToFile];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
int age = [unarchiver decodeIntForKey:@"Age"];
int weight = [unarchiver decodeIntForKey:@"Weight"];
NSString *name = [unarchiver decodeObjectForKey:@"Name"];
不过,这只是冰山一角。与您要查找的内容相比,这似乎是很多代码,但也可以少很多工作。因为可以存储和读取对象及其关系,所以您可以用很少的代码读取复杂的对象图:
OrgChart *chart = [NSUnarchiver unarchiveObjectWithFile:pathToFile];
另一种选择是使用属性列表,它非常易于使用,但可以使用的数据类型有限。
If you want to learn more about these topics, read Archives and Serializations Programming Guide, Property List Programming Guide, and File System Programming Guide.
您可以像以前一样使用 Objective-C++ 和 iostreams。
您可以使用 fopen 和 fscanf 等 CI/O 函数。(可能我会做什么。)
Apple 提供NSScanner
解析,但它只从字符串中读取,而不是从输入流中读取。如果您真的想使用它,首先您必须将整个文件(或一大块)读入一个 NSString(或一个 NSData,然后将其转换为 NSString)。
如果您可以要求文本文件为 JSON 格式,则可以一口气阅读并使用 NSJSONSerialization 对其进行解析。