Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Error #1000: The system is out of memory. (http://www.flasher.ru/forum/showthread.php?t=165574)

ERrorMAKros 24.08.2011 17:13

Error #1000: The system is out of memory.
 
Добрый день,
...реализую чтение файла средствами FileSteam (AIR Application). Суть реализации - научить мое приложение частями (по 1 мегабайту) читать содержимое больших (>1gb; >Ngb) бинарных файлов. В дальнейшем каждая часть - отправляется на сервер, пока блоковое чтение не достигнет конца файла.
Код AS3:

var file:File = new File("c:\big.bin");
trace(file.size); // 3,801,498,129 bytes (3.54 GB);
var fileStream:FileStream = new FileStream();
var inputBuffer:ByteArray = new ByteArray();       
inputBuffer.position = 0;
fileStream.open(file, FileMode.READ);
fileStream.position = position; // смещение внутри файла;
fileStream.readBytes(inputBuffer, 0, 1048576);
fileStream.close();

В данной реализации (при чтении файла с размером меньше чем 1Gb) приложение нагружает общую оперативную память примерно на 1mb, при попытке чтения файла размером больше 3gb получаю:
Error #1000: The system is out of memory.
at flash.filesystem::FileStream/readBytes()


P.S. Подскажите что делать?????

gloomyBrain 24.08.2011 17:45

Код AS3:

fileStream.readAhead = 10000; // можно и больше, тут надо экспериментировать
fileStream.openAsync(file);


ERrorMAKros 24.08.2011 17:51

В случае fileStream.openAsync(file); - заметил игнорирование значения fileStream.position;.
Как мне показалось - чтение файла в любом случае начинает производиться с fileStream.position == 0, а не с fileStream.position == N;

Добавлено через 21 час 45 минут
Больше никто ничего не подскажет что ли? ...неужели такая простая задача для AIR настолько эпична?

ERrorMAKros 26.08.2011 20:12

Вложений: 1
Тем, кому интересно - найти решение мне удалось. Успешно обработал файл с размером больше 5Gb.
Предлагаю свою версию реализации в вложенном архиве.
P.S. Тему можно закрывать! :bye:


Часовой пояс GMT +4, время: 10:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.