본문 바로가기

Flex File

File

파일 시스템 API 내용 정리

 

1. flash.filesystem.File


※ 영문 API문서를 보고 아는 부분은 번역을 하고
     각 기능들을 직접 사용해 보고 작성한 것이지만 틀린 부분이 있거나
     잘못된 부분이 있으면 덧글을 달아주시면 감사하겠습니다. ^^
     참고로 그 기능을 모르는 부분은 생략하였습니다.



0) 기본 개요

 

    AIR에서는 파일 시스템 API를 지원합니다.
    플래시 개발자의 입장에서 가장 매력적인 부분중 하나죠. ㅋㅋ
    자바에서의 파일 입출력 API와 거의 비슷하며
    많은 개념을 가져다 사용한듯 합니다. 특히 Stream단위로 파일을 로드하고
    이벤트를 콜백시키는 방법은 역시 AS다운(스러운?) 인터페이스로 구성하고
    설계했다고 생각이 되내요.

    AIR는 Strema(바이트)단위로만 데이터를 읽어 올수 있습니다.

    AIR 1.0에서는 파일시스템 관련 API로 다음과 같이 3개의 Class를 지원합니다.


   flash.filesystem.File :
     OS에서 제공하는 파일과 디렉토리의 기본 정보와 엑세스 전 파일의
     유무를 먼저 파악할수 있는 기능들을 제공합니다.

     파일을 생성하고 디렉토리를 삭제하는 등의 기본적인 파일 시스템
     액세스 처리를 담당한다.


   flash.filesystem.FileMode :
     파일의 액세스 모드라는 데이터 상수를 정적으로 담고 있는 데이터 클래스 이다.


     FileMode.READ - 'read'
     파일을 읽기 모드로 액세스 할때


     FileMode.WRITE - 'write'
     파일을 쓰기 모드로 액세스 할때


     FileMode.APPEND - 'append'
     파일을 업데이트 모드로 액세스 할때


     FileMode.UPDATE - 'update'
     파일을 읽기와 쓰기 모드로 액세스 할때



   flash.filesystem.FileStream :
     파일을 스트림으로 열어 액세스 하고
     데이터의 조작, 삭제, 수정등의 기능을 담당한다.




1) File 클래스


 - Properties Summary



    applicationDirectory : File
        현제 어플리케이션이 실행되고 있는 디렉토리



    applicationStorageDirectory : File
        현재 어플리케이션이 사용자 어플리케이션 데이터 저장소 폴더에서
        사용하고 있는 할당된 디렉토리 영역


        예) C:\Documents and Settings\User\Application Data\com.adobe.example.FileStream\Local Store


        AIR에서는 Application Data폴더내에서 어플리케이션 단위로 로컬 저장소 형태의 폴더를 구성할수 있다.



    desktopDirectory : File
        사용자 데스크탑 폴더
        윈도우는 바탕화면이 이에 해당된다.



    documentsDirectory : File
        사용자 문서 폴더


        예) C:\Documents and Settings\User\My Documents\



    exists : Boolean
        현재 File객체가 가르키는 파일 혹은 디렉토리의 존재 여부



    icon : Icon
        GUI형식의 OS에서 사용되는 파일의 아이콘 관련 정보를 가진
        flash.desktop.Icon 객체의 참조를 리턴한다.



    isDirectory : Boolean
        현재 File객체가 가르키는 파일 혹은 디렉토리의 여부



    isHidden : Boolean
        현재 File객체가 가르키는 파일 혹은 디렉토리가 숨김으로 표시된 것인가의 여부



    isPackage : Boolean
        ??



    isSymbolicLink : Boolean
        ??



    lineEnding : String
        파일이 가지고 있는 라인의 끝 부분 흔히 \n또는 \r\n으로 구분되는 부분인데...
        이 파일이 가지고 있는 라인의 끝을 나타내는 문자열이 무엇인지 표시 하여 준다.
        플래시에서는 \r\n의 경우 두칸이 아래로 내려간다
        그렇기 떄문에 텍스트를 파일에서 읽어 올때는
        str.replace(/\n/g, File.lineEnding);
        이렇게 무결성 처리를 해주어야 한다.



    nativePath : String
        현재 File객체가 가르키는 파일 혹은 디렉토리의 시스템 절대 경로를 String으로 반환한다.



    parent : File
        현재 File객체가 가르키는 파일 혹은 디렉토리가 속해 있는 디렉토리를 File객체로 반환한다.



    separator : String
        현재 OS에서 경로를 나태날때 사용되는 슬래시와 역슬래시에 대한 정보를 스트링으로 반환한다.
        Window의 경우 D:\info.txt
        MacOS 와 유닉스 계열에서는 D:/info.txt



    systemCharset : String
        현재 OS에서 사용하고 있는 기본 인코딩 타입을 스트링으로 반환한다.
        한글 윈도우의 경우 'ks_c_5601_1987'이 반환된다.



    url : String
        현재 File객체가 가르키는 파일 혹은 디렉토리의 url경로를 스트링으로 반환한다.
        사용자 PC에서는 file:///D:/info.txt
        웹상에서는 http://air.org/info.txt



    userDirectory : File
        현재 OS의 사용자 계정 경로를 참조하는 파일객체를 반환한다.


        예) C:\Documents and Settings\User




 - Method Summary



     File(path:String = null)

         생성자
         path - 생성자 파일의 절대 경로 혹은
                  URL 스키마를 통한 상대 경로



     browseForDirectory(title:String):void
         디렉토리를 검색하여 참조 할수 있게 팝업창을 띄운다.
         title - 팝업을 띄울때 창의 이름



     browseForOpen(title:String, typeFilter:Array = null):void
         파일을 검색하여 열수 있게 팝업창을 띄운다.
         title - 팝업을 띄울때 창의 이름
         typeFilter - 파일필터 객체를 참조하고 있는 배열



     browseForOpenMultiple(title:String, typeFilter:Array = null):void
         browseForOpen와 같으나 여러개의 파일을 검색하여 선택할수 있다.
         title - 팝업을 띄울때 창의 이름
         typeFilter - 파일필터 객체를 참조하고 있는 배열



     browseForSave(title:String):void
         파일에 데이터를 쓰기 위하여 파일을 검색하는 창을 열어준다.
         title - 팝업을 띄울때 창의 이름



     cancel():void
         현재 진행중인 파일 열기를 취소 한다.



      copyTo(newLocation:FileReference, overwrite:Boolean = false):void
         파일과 디렉토리를 복사한다.
         newLocation - 대상이 되는 파일참조 객체
         overwrite - 덮어 쓰기의 여부



      copyToAsync(newLocation:FileReference, overwrite:Boolean = false):void
         copyTo와 같으나 비동기식으로 프로세스가 진행된다는 점이 다르다.
         copyTo의 경우 해당 파일 객체의 쓰레드가 발생하면 블록형태로 프로세스 대기
         모드가 된다. 이후 처리가 완료 되면 다음 명령어들이 처리된다.
         그러나 copyToAsync를 사용할 경우 이벤트핸들링을 통하여
         처리가 완료되면 이벤트를 발생한다.
         API에 자세한 예제가 있으니 참조.



      createDirectory():void
         현재 경로에 새로운 디렉토리를 생성한다.


         예)
          var targetParent:File = new File('D:/qqx');

          // 현재 디렉토리가 존재하지 않으면 만들어라
          if(!targetParent.exists)
              targetParent.createDirectory();



      createTempDirectory():File
         OS가 가지고 있는 임시 폴더에 새로운 디렉토리를 만들고 그 참조를 반환한다.



      createTempFile():File
         OS가 가지고 있는 임시 폴더에 새로운 파일을 만들고 그 참조를 반환한다.



      deleteDirectory(deleteDirectoryContents:Boolean = false):void
         현재 디렉토리를 삭제 한다



      deleteDirectoryAsync(deleteDirectoryContents:Boolean = false):void
         deleteDirectory와 같으나 비동기 처리 된다.



      getDirectoryListin():void
         현재 디렉토리에 속해 있는 모든 디렉토리와 파일을 참조한 배열을 만들어 리턴해 준다.



      getDirectoryListingAsync():void
         getDirectoryListin와 같으나 비동기 처리 된다.



      getRelativePath(ref:FileReference, useDotDot:Boolean = false):String
         ref를 대상으로 한 상대 경로를 스트링으로 반환



      getRootDirectories():Array
         현재 사용자가 사용하고 있는 루트 경로(드라이브)들를 참조한 배열을 리턴한다.



      moveTo(newLocation:FileReference, overwrite:Boolean = false):void
         디렉토리와 파일을 이동한다. 이동할때 덮어 쓰기의 여부를 지정할수 있다.



      moveToAsync(newLocation:FileReference, overwrite:Boolean = false):void
         moveTo와 같지만 비동기식으로 처리된다.



      moveToTrash():void
         쓸모없는 파일과 디렉토리를 정리해 준다?
         라는 뜻으로 해석이 되는데...
         이 메서드의 명확한 기능은 모르겠내요 ^^



      moveToTrashAsync():void
         moveToTrash의 비동기 처리



      resolvePath(path:String):File

         현재 디렉토리를 기준으로 새로운 경로나 디렉토리 혹은 파일을 참조하는 File객체를 반환한다.




 - Event Summary



      cancel (flash.events.Event.CANCEL)
         파일을 오픈하거나 데이터를 저장할때 진행중인 프로세스를 중단할때 발생한다.



      complet (flash.events.Event.COMPLETE)
         파일을 오픈하거나 데이터를 저장하는 등의 프로세스가 완료 되었을때 발생한다.



      directoryListing (flash.events.FileListEvent.DIRECTORY_LISTING)
         디렉토리의 내용을 모든 갱신할때 발생 한다. (비동기식)



      ioError (flash.events.IOErrorEvent.IO_ERROR)
         파일 입출력 에러가 발생 하였을때.



      securityError (flash.events.SecurityErrorEvent.SECURITY_ERROR)
         보안에러가 발생 하였을때.



      select (flash.events.Event.SELECT)
         파일 검색 팝업창에서 파일을 선택하고 확인을 클릭하였을때 발생



      selectMultiple (flash.events.FileListEvent.SELECT_MULTIPLE )
         파일 검색 팝업창에서 1개 이상의 파일을 선택하고 확인을 클릭하였을때 발생




'Flex File' 카테고리의 다른 글

FileStream  (1) 2008.06.12
Flex 파일업로드 FileReference()  (2) 2007.08.22
Flex 파일 업로드  (28) 2007.06.13