在iphone中获取文件内容的大小

时间:2011-05-20 03:57:00

标签: iphone objective-c file file-io

我正在编写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。

在阅读文件之前,我们如何找到文件内容的大小。那么我们可以用优化的方式编写代码来有效地读取文件吗?

请给我你的建议......

2 个答案:

答案 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方法返回的文件描述符使用fstatfileDescriptor