получение размера содержимого файла в iphone

#iphone #objective-c #file #file-io

#iPhone #objective-c #файл #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 КБ, мы можем прочитать его за 8 итераций по 1 КБ за цикл.

Как мы можем определить размер файла перед чтением файла contents.so что мы можем написать код оптимизированным способом для эффективного чтения файла?

пожалуйста, дайте мне ваши предложения….

Ответ №1:

iPhone имеет все стандартные API POSIX, поэтому вы можете использовать stat («file.txt «, amp;st), где st — это «структурный показатель». Элемент «st.st_size» предоставит вам размер файла в байтах.

Ответ №2:

Если вы действительно хотите прочитать файл целиком, просто используйте readDataToEndOfFile и не беспокойтесь о предварительном определении длины.

Из NSFileHandle вы можете найти длину сначала seekToEndOfFile , а затем offsetInFile . Если у вас есть фактическое имя файла, вы могли бы использовать NSFileManager attributesOfItemAtPath:error: для получения длины (как с C stat ) вместо этого. Или, если уж на то пошло, вы могли бы фактически использовать stat , или fstat для дескриптора файла, возвращаемого fileDescriptor методом NSFileHandle.