我正在编写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。
在阅读文件之前,我们如何找到文件内容的大小。那么我们可以用优化的方式编写代码来有效地读取文件吗?
请给我你的建议......
答案 0 :(得分:2)
iPhone拥有所有标准POSIX API,因此您可以使用stat(“file.txt”,& st),其中st是“struct stat”。 “st.st_size”成员将以字节为单位给出文件大小。
答案 1 :(得分:1)
如果您真的想要阅读整个文件,请使用readDataToEndOfFile
,不要担心事先确定长度。
从NSFileHandle,您可以先找seekToEndOfFile
然后offsetInFile
找到长度。如果您有实际的文件名,则可以使用NSFileManager的attributesOfItemAtPath:error:
来检索长度(与C的stat
一样)。或者,就此而言,您实际上可以对NSFileHandle的stat
方法返回的文件描述符使用fstat
或fileDescriptor
。