正在为iPhone编写一个应用程序,以使用NSData读取文本文件。
NSFileHandle *fileRead;
// this may lead to crash or memory issue, if the file size is about 10 mb or more
NSData *data = [fileRead readDataOfLength:(entire contents of the file)];
例如,如果文件大小为 8 kb,我们可以在每个周期 8 次迭代中读取它 1kb。
在读取文件之前,我们如何找到文件的大小,contents.so 我们可以以优化的方式编写代码以有效地读取文件?
请给我你的建议。
iPhone具有所有标准的POSIX API,因此您可以使用stat("file.txt",&st),其中st是"struct stat"。"st.st_size"成员将为您提供以字节为单位的文件大小。
如果您真的想读取整个文件,只需使用 readDataToEndOfFile
,而不必担心事先确定长度。
从 NSFileHandle 中,您可以先按 seekToEndOfFile
然后按 offsetInFile
找到长度。如果你有实际的文件名,你可以使用 NSFileManager 的attributesOfItemAtPath:error:
来检索长度(与 C 的 stat
一样)。或者,就此而言,您实际上可以在 NSFileHandle 的 fileDescriptor
方法返回的文件描述符上使用 stat
或 fstat
。