获取iphone中文件内容的大小
我正在为 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。
在读取文件之前,我们怎样才能知道文件内容的大小,以便我们能够以优化的方式编写代码来有效地读取文件呢?
请给我你的建议......
Am writing an application for iphone to read a text file using 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)];
For example, if the file size is 8 kb, we can reading it in 8 iterations by 1kb per cycle.
Before reading the file, how can we find the size of the file contents.so that we can write the code in a optimized way to read the file effectively?
plz give me your suggestions....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
iPhone 具有所有标准 POSIX API,因此您可以使用 stat("file.txt", &st),其中 st 是“struct stat”。 “st.st_size”成员将为您提供文件大小(以字节为单位)。
The iPhone has all of the standard POSIX APIs, so you can use stat("file.txt", &st), where st is a "struct stat". The "st.st_size" member will give you the file size in bytes.
如果您确实想读取整个文件,只需使用 readDataToEndOfFile 即可,而不必担心预先确定长度。
从 NSFileHandle 中,您可以先通过
seekToEndOfFile
然后通过offsetInFile
找到长度。如果您有实际的文件名,则可以使用 NSFileManager 的attributesOfItemAtPath:error:
来检索长度(与 C 的stat
一样)。或者,就此而言,您实际上可以对 NSFileHandle 的fileDescriptor
方法返回的文件描述符使用stat
或fstat
。If you're really wanting to read the entire file, just use
readDataToEndOfFile
and don't worry about determining the length beforehand.From an NSFileHandle, you can find the length by first
seekToEndOfFile
and thenoffsetInFile
. If you have the actual file name, you could use NSFileManager'sattributesOfItemAtPath:error:
to retrieve the length (as with C'sstat
) instead. Or, for that matter, you could actually usestat
, orfstat
on the file descriptor returned by NSFileHandle'sfileDescriptor
method.