Возможно ли установить BufferSize в FileStream? - PullRequest
2 голосов
/ 18 августа 2011

Мне нужно записать большие данные на диск, поэтому я использую FileStream.openAsync():

this.file_stream = new FileStream();
this.file_stream.openAsync(fl, FileMode.WRITE);

//Write large get from database
while(i < 10240000) {
    this.file_stream.write(bigDatas)
    i = i + 1;
}

И затем, приложение, убитое Linux kenkel (копия сообщения из 'dmesg'):

Убитый процесс 4267 (MyFlex) total-vm: 1282708kB, anon-rss: 863176kB, file-rss: 756kB

Итак, есть ли способ установить размер буфера в FileStream?

1 Ответ

0 голосов
/ 25 апреля 2013

Вы пытаетесь выполнить цикл 10 миллионов раз.

Проблема не в буфере FileStream. Скажите спасибо Linux, который остановил выполнение вашего приложения и не допустил взрыва вашей системы.

Вам необходимо сохранить один файл, и когда файл будет сохранен, перейдите к следующему, посмотрите на код, функция «writeFile» ожидает повторного выполнения события CLOSE.

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.events.Event;

var file:File;
var stream:FileStream = new FileStream();

stream.addEventListener(Event.CLOSE, writeFile);

var cont:uint = 0;
//---I do not think that you need to run a code 10 million times (This code will save the file 10 times)
var total:uint = 10;

//---Write file in the Desktop in the folder "test"
function writeFile(evt:Event = null){

    cont++;

    if(cont == total + 1) {

        stream.removeEventListener(Event.COMPLETE, writeFile);

        trace("finish");

    }else{

        trace("write file number " + cont);

        file = File.desktopDirectory.resolvePath("test/data" + cont);

        stream.openAsync(file, FileMode.WRITE);

        stream.writeByte(0xFF);

        stream.close();

    }

}

//---Execute the function for first time
writeFile();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...