2013-08-22 2 views
1

Я пытаюсь скопировать файлы изображений и мультимедиа, используя NSStreams. Я не могу использовать NSFileManagercopyItemAtPath, так как мне нужно скопировать файл с помощью потоков.Проблемы с копированием файлов на iOS с использованием NSStreams

Данные передаются по сети, и поток считывается скриптом Python, который записывает данные в файл. Это отлично работало на Mac OSX, но когда я попытался в iOS, файл не был сохранен в соответствующем формате.

Я могу скопировать все файлы, но некоторые из метаданных как размеры (для графических и мультимедийных файлов) и продолжительность (для медиа-файлов) отсутствует в скопированного файла, и вид всегда Документ. Другие метаданные в порядке.

Когда я пытаюсь прочитать файл атрибутов с помощью NSFileManager

[[NSFileManager defaultManager] attributesOfItemAtPath:@"filePath" error:&error]; 

Это показывает ошибку в консоли:

Операция не может быть завершена. Нет такого файла или каталога

Я также заметил, что все скопированные файлы, независимо от расширения файла (.png, .jpeg, .mov, .zip), имеет вид из документа

Как скопировать исходные метаданные изображения в скопированный файл?

Есть ли оптимизация Xcode мне нужно отключить?

  • OS: Mac OSX 10.8.4, IOS 6

  • Xcode: 4.6.3

+0

Почему вы хотите использовать NSStream? Объект NSStream может представлять только файл данных файла, который недостаточно хорош и иногда пуст для файлов, содержащих гигабайты данных в другом месте файла. Попытка реализовать это сама по себе является ошибкой, правильный способ скопировать файл несколько раз менялся за последние несколько лет. Лучше сказать ядру сделать копию файла, используя NSFileManager. Существуют варианты более низкого уровня, если вам нужна дополнительная гибкость. Например, FSCopyObjectAsync(). –

+0

Вы знаете, как работает прожектор? Core Storage? Синхронизация iCloud? Ресурсы Вилки? Разрешения ACL? Машина времени? Уведомления Kqueue? Каталог жестких ссылок? Как насчет неизвестных изменений, которые могут появиться в версии OS X 2014? Вы должны знать все, если это скопировать файл. –

+0

Где находится Python? –

ответ

0

Я выяснил, что это проблема с расширением файла. Некоторые ненужные символы добавляются после расширения файла (что-то вроде 1.png \\\)

1

Это работает для меня для любого типа файла:

if (![NSFileManager.defaultManager copyItemAtPath: sourceFileName toPath: targetFileName error: &error]) { 
    NSAlert *alert = [NSAlert alertWithError: error]; 
    [alert runModal]; 
    return; 
} 
Смежные вопросы