'FileStream'에 해당되는 글 1건

  1. 2008.12.22 파일 생성 및 내용추가 수정하는 FileStream클래스
AIR/파일시스템 연동2008. 12. 22. 18:43

AIR의 가장 큰 장점은 AS기반의 언어에서 구사하지 못하였던 로컬 디렉토리나 파일을 읽고 기록할 수 있다는 것이다. 물론 player10에서는 FileReference가 확장되어 이와 같은 작업이 가능하여 웹어플리케이션에서도 확장 가능하지만 AIR처럼 데스크탑 관리에 유연하지는 않다.

파일을 관리하기 위해서는  File클래스 외에 FileStream()클래스가 필요하다.
FileStream()은 파일을 읽기 및 쓰기에 사용되며 open() 메서드를 호출하여 동기적으로 열거나 openAsync() 메서드를 호출하여 비동기적으로 열 수 있다.
File에 의하여 경로를 설정한 delegator를 open( File객체 , FileMode )에서 1번 파라미터로 사용하고 FileMode를 사용하여 읽기,쓰기,추가,갱신 등의 옵션을 사용하여 작업한다.

FileMode 상수 읽기 작성 만들기 열 때 잘라내기 작성된 데이터 추가
READ
WRITE
APPEND
UPDATE

  • 읽기 - FileStream 객체가 파일에서 데이터를 읽어올 수 있습니다.
  • 작성 - FileStream 객체가 파일에 데이터를 작성할 수 있습니다.
  • 만들기 - FileStream 객체가 파일을 열 때 존재하지 않는 파일을 만듭니다.
  • 열 때 잘라내기 - 파일을 열 때 파일에 있는 데이터가 데이터를 쓰기 전에 삭제됩니다.
  • 작성된 데이터 추가 - write 메서드가 호출될 때 데이터가 항상 파일 끝에 기록됩니다.

    표를 쉽게 설명하면 READ는 파일의 바이너리 데이터를 읽어오는 목적으로 사용되며 WRITE는 기록을 위해 불러온다 단 기존의 모든 데이터는 제거되며 기존에 없는 파일일 경우에는 새로 생성된다. APPEND는  기존 바이트 배열의 제일 끝 부분부터 바이트 데이터를 추가 할 수 있으며 UPDATE 는 이전 데이터를 버리지 않으면서 바이트 배열의 어느 position으로든 접근하여 바이트 데이터를 기록 할 수 있다.

    이처럼 FileMode를 선택하여 필요한 작업을 마친 다음에는 언제나 close()를 호출하여 스트림을 닫아주어야 한다. 이는 열려있는 중에 같은 파일을 수정하거나 삭제 등을 하려할 때 시도되지 않는다.

    이처럼 File클래스를 사용하여 경로를 지정하면 FileStream을 사용하여 데이터를 기록하거나 읽어올 수 있다.
    private var file:File;
    private var count:int = 1;
    private function make():void
    {
       //저장할 경로와 이름설정
       file = File.desktopDirectory.resolvePath("test"  + count + ".txt");
       
       //파일저장과 저장형식 설정
       var stream:FileStream = new FileStream();
       stream.open(file , FileMode.WRITE );
       stream.writeMultiByte("저장되는 파일" + count , "UTF-8");
       stream.close();
       count++;
    }

    위의 코드를 실행하면 바탕화면에 test번호.txt를 만들며 텍스트문서의 내용은 "저장되는 파일+count번호"라고 저장된다.

    이처럼 파일포맷을 알면 text문서든 이미지 파일이건 심지어 영상물이나 ppt등을 만들 수 있다. 바이터 배열은 단순히 0과1의 조합으로(실제로는 16진수로 길이를 줄여서 표현) 관련 어플리케이션이 해석만 가능하다면 어떠한 포맷으로든 만들 수 있다.

  • Posted by 버터백통