2012-01-25 5 views
1

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

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

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

Благодарим за любую информацию.

ответ

3

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

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

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

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

выше ссылка показывает, что размер буфера по умолчанию устанавливается в байт (8k), но несколько конструкторов позволяет использовать различный размер (если вы хотите так).

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

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

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

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

+0

Спасибо за ответ, кажется, что iOS имеет приемлемую производительность ввода/вывода. (http://forums.imore.com/iphone-4s-forum/221365-iphone-4s-io-performance.html) –

+0

Размер буфера по умолчанию - это действительно деталь реализации (и на самом деле в MonoTouch на самом деле будет изменена до 4096 - это изменение уже произошло в mono master). –

Смежные вопросы