[AIR] 파일 다루기 2장

AIR 2007/12/17 09:24 |

간단한 Flash tracer만들기
...간단하게 1초에 한번씩 파일을 읽어보는 코드를 만들어 보기로 한다..1초에 한번씩 읽되 사이즈의 변경이 없다면 읽지 않는 간단하게 만드러본 소스입니다..

   import flash.filesystem.File
   import flash.filesystem.FileMode
   import flash.filesystem.FileStream;
   import flash.utils.setInterval;

   private var winLog:File;
   private var fs:FileStream;
   private var chkSize:int;

   public function init():void{
    //flashlog
    winLog = File.userDirectory
    .resolvePath("Application Data/Macromedia/Flash Player/Logs/flashlog.txt");

    fs = new FileStream();
    fs.addEventListener(Event.COMPLETE,readCompleteHandler);

    setInterval(readLogFile,1000);
   }

   private function readLogFile():void{

    if(chkSize != winLog.size){
       fs.openAsync(winLog,FileMode.READ);
    }else{
     try{
       fs.close();
     }catch(e:Error){}
    }
   }

   private function readCompleteHandler(evt:Event):void{
    logViewer.text = fs.readMultiByte(winLog.size,File.systemCharset);
    fs.close();
    chkSize = winLog.size;
   }


logViewer라는 TextArea를 만들고 테스트 하면 됩니다..
그런데 한가지 이슈가 있네요...AIR Application이 실행되면 AIR Application상에서 내뱉는 trace를 잡을수 있는데
그외에 app가 flashlog.txt에 접근이 불가합니다...

따라서 ...AIR Application으로는 trace viewer를 자신의 app전용으로밖에 사용할 수가 없네요...아쉽더군요..


크리에이티브 커먼즈 라이선스
Creative Commons License

Trackback Address :: http://lovedev.tistory.com/trackback/110

댓글을 달아 주세요

  1. 인민군 2008/03/12 13:47 Address Modify/Delete Reply

    공부하는 중에 막혔던 부분인데...
    님께서도 같은 현상을 발견하셨군요.

    일단 내용은 이렇습니다.

    AIR런타임에서 C:\Documents and Settings\User\Application Data\Macromedia\Flash Player\Logs
    에 위치한 flashlog.txt파일을 액세스 하려고 접근을 하면 런타임에서 flashlog.txt파일을 초기화 시킵니다.
    즉, 기존에 쌓여 있던 trace 데이터들을 모두 날리고 0kbyte의 파일로 만들어 버립니다.
    그리고 flashlog.txt파일에 락을 걸어 버립니다.
    이는 파일 자체를 아주 비동기로 액세스 하는거죠.
    즉, 다른 app에서 접근을 못하게 말이죠.

    결국 flashlog.txt파일은 웹상에서 trace되는 데이터들을 모두 막아 버리고
    AIR런타임에서 trace되는 것만 캣취를 하는 것이죠.

  2. ActionDev 2008/03/12 16:51 Address Modify/Delete Reply

    ^^ 맞습니다.
    flashlog.txt 파일을 lock걸어버리는..^^