2011-08-18 6 views
2

나는 디스크로 대용량 데이터를 작성해야합니다, 그래서 FileStream.openAsync()를 사용FileStream에서 BufferSize를 설정할 수 있습니까?

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; 
} 

그리고 앱이 ('dmesg 명령'에서 메시지 복사) 리눅스 kenkel에 의해 살해 :

사망 과정 4267 (MyFlex) 총-VM : 1282708kB, 곧-RSS : 863176kB, 파일 RSS : 756kB

그래서하여 FileStream에서 버퍼 크기를 설정할 수있는 방법이있다?

+1

것은이 그렇지 읽기, 쓰기에 대한 우려에도 불구하고, 유용 할 수 있습니다 : http://stackoverflow.com/questions/2321951/as3-working-with-arbitrarily-large-files – altschuler

답변

0

사이클을 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(); 
관련 문제