В моем приложении у меня есть аудиофайлы, хранящиеся в формате caf и aac. Мне нужно получить размер аудиофайла в КБ по URL-адресу аудио. Есть ли способ выполнить это требование?
Получение размера аудиофайла в килобайтах
Ответы (4)
Вы можете использовать NSFileManager
для запроса словаря атрибутов, а затем получить размер из словаря атрибутов:
NSFileManager * fileManager = [NSFileManager new];
NSError * error = 0;
NSDictionary * attr = [fileManager attributesOfItemAtPath:path error:&error];
// error checking
unsigned long long size = [attr fileSize];
[fileManager release];
это доступно на iOS 2 и OSX.5
person
justin
schedule
05.11.2011
Привет, все работает, спасибо. Но я уже сделал это другим способом, о котором я упомянул ниже.
- person Siddharth; 06.11.2011
@Siddharth Да, создание представления NSData и получение его длины также работает, но вы должны зарезервировать этот подход, когда вам нужно представление
NSData
. Если вам нужно представление NSData
, ваш подход отлично работает. Если вам не нужно представление NSData
, вам следует отдать предпочтение моему подходу, потому что он сэкономит много ресурсов ЦП, дисковой активности и памяти по сравнению с созданием экземпляра NSData
из файла.
- person justin; 06.11.2011
Хорошо. Звучит здорово. Спасибо.
- person Siddharth; 08.11.2011
вы можете использовать следующую командную строку
$ curl --head $URL_OF_AUDIO_FILE | длина содержимого grep | awk '{печать ($2/1024);}'
[[Пример для PDF]]
curl --head http://cran.r-project.org/doc/manuals/R-intro.pdf | длина содержимого grep | awk '{печать ($2/1024);}'
person
AbhishekKr
schedule
03.11.2011
Вы можете использовать средства доступа к свойствам CF/NSURL, которые доступны в iOS 5 и более поздних версиях, а также в OSX.6 и более поздних версиях:
id value = 0;
// Key for the file’s size in bytes, returned as an NSNumber object:
NSString * key = NSURLFileSizeKey;
NSError * error = 0;
BOOL result = [audioFileURL getResourceValue:&value forKey:key error:&error];
... error checking here ...
NSNumber * number = value;
Существует несколько ключей для информации о размере файла, другой может лучше подходить для ваших нужд.
person
justin
schedule
03.11.2011
Я пробовал это, но я получаю число как нулевое. Я получил результат bool как ДА. Любая причина? Где я делаю неправильно?
- person Siddharth; 05.11.2011
файл читается? также в ios4 метод ничего не делает.
- person justin; 05.11.2011
хорошо - на iOS вы можете использовать этот метод на 5.0 и более поздних версиях. я обновил свой ответ с этой деталью.
- person justin; 05.11.2011
@Siddharth я предоставил новый ответ, который имеет лучшую обратную совместимость.
- person justin; 05.11.2011
Я решил это, преобразовав его в NSData и получив свойство длины.
NSError *err = nil;
NSData *audioData = [NSData dataWithContentsOfFile:file options:0 error:&err];
NSString *audioLength = [NSString stringWithFormat:@"%dkB",[audioData length]/1000];
NSLog(@"[audioData bytes]==%@",audioLength);
person
Siddharth
schedule
06.11.2011