iOS: потоковая передача большого файла - PullRequest
1 голос
/ 25 января 2012

Я хочу непрерывно передавать потоковый файл данных для игры с диска устройства iOS. Вопрос в том, если кто-нибудь передал такие файлы (блоки по 20 МБ) раньше, используя System.IO.FileStream. У меня нет iOS-устройства, которое я тестировал сам, и я не ожидаю получить его в следующий раз.

Есть 2 вопроса:

  • Является ли файл потоковым, не загружая его полностью (поведение, которое я ожидаю от потока, но я не уверен в обработке MonoTouch) и как используется память при потоковой передаче?
  • Как производительность загрузки, особенно при одновременной загрузке разных файлов?

Спасибо за любую информацию.

1 Ответ

3 голосов
/ 25 января 2012

Библиотеки базовых классов MonoTouch (BCL) взяты из Mono, поэтому большая часть кода доступна с открытым исходным кодом.В случае FileStream вы можете увидеть код на github.

Потоковый файл не загружается полностью (поведение, которое я ожидаю от потока, но я 'я не уверен насчет работы с MonoTouch)

Вы правы, он не будет полностью загружен.Вы будете контролировать, что читается.

и как используется память при потоковой передаче?

Приведенная выше ссылка показывает, что размер буфера по умолчанию установлен на 8192 байт (8 КБ), но несколько конструкторов позволяют использовать другой размер (если вы этого хотите).

и как используется память при потоковой передаче?

Но этот буфер является внутренним буфером.Вы будете предоставлять свой собственный буфер при вызове таких методов, как Read, поэтому вы снова будете контролировать объем используемой памяти.

Какпроизводительность процесса загрузки, особенно при одновременной загрузке разных файлов?

Это сложно предсказать, и оно будет во многом зависеть от вашего приложения (например, количество файлов, общий объем памяти, необходимый ...).Вы можете использовать FileStream асинхронные методы, такие как BeginRead, чтобы повысить производительность при необходимости.

...