디렉토리 작업

Adobe AIR 1.0 이상

런타임에서는 로컬 파일 시스템의 디렉토리를 사용하여 작업하기 위한 기능을 제공합니다.

디렉토리를 가리키는 File 객체를 만드는 방법에 대한 자세한 내용은 File 객체로 디렉토리 가리키기 를 참조하십시오.

디렉토리 만들기

File.createDirectory() 메서드를 사용하여 디렉토리를 만들 수 있습니다. 예를 들어 다음 코드에서는 사용자 홈 디렉토리의 하위 디렉토리로 AIR Test라는 디렉토리를 만듭니다.

var dir:File = File.userDirectory.resolvePath("AIR Test"); 
dir.createDirectory(); 

디렉토리가 이미 있는 경우 createDirectory() 메서드는 아무 작업도 수행하지 않습니다.

또는 일부 모드에서는 파일을 열 때 FileStream 객체가 디렉토리를 만듭니다. FileStream() 생성자의 fileMode 매개 변수를 FileMode.APPEND 또는 FileMode.WRITE 로 설정하여 FileStream 인스턴스를 인스턴스화하면 없는 디렉토리가 만들어집니다. 자세한 내용은 파일 읽기 및 쓰기 작업 과정 을 참조하십시오.

임시 디렉토리 만들기

File 클래스에는 다음 예제와 같이 시스템의 임시 디렉토리 폴더에 디렉토리를 만드는 createTempDirectory() 메서드가 포함되어 있습니다.

var temp:File = File.createTempDirectory(); 

createTempDirectory() 메서드는 자동으로 고유한 임시 디렉토리를 만들어 고유한 새 위치를 확인하는 작업을 저장합니다.

임시 디렉토리에는 응용 프로그램의 세션 동안 사용되는 임시 파일을 저장할 수 있습니다. 시스템 임시 디렉토리에 고유한 새 임시 파일을 만들기 위한 createTempFile() 메서드도 있습니다.

임시 디렉토리는 모든 장치에서 자동으로 삭제되지 않으므로 응용 프로그램을 닫기 전에 삭제하는 것이 좋습니다.

디렉토리 열거

File 객체의 getDirectoryListing() 메서드 또는 getDirectoryListingAsync() 메서드를 사용하여 디렉토리의 파일 및 하위 폴더를 가리키는 File 객체 배열을 가져올 수 있습니다.

예를 들어 다음 코드에서는 사용자 문서 디렉토리의 내용을 나열합니다(하위 디렉토리는 확인하지 않음).

var directory:File = File.documentsDirectory; 
var contents:Array = directory.getDirectoryListing();  
for (var i:uint = 0; i < contents.length; i++)  
{ 
    trace(contents[i].name, contents[i].size);  
} 

비동기 버전의 메서드를 사용할 경우 directoryListing 이벤트 객체에는 디렉토리를 가리키는 File 객체 배열인 files 속성이 있습니다.

var directory:File = File.documentsDirectory; 
directory.getDirectoryListingAsync(); 
directory.addEventListener(FileListEvent.DIRECTORY_LISTING, dirListHandler); 
 
function dirListHandler(event:FileListEvent):void 
{ 
    var contents:Array = event.files; 
    for (var i:uint = 0; i < contents.length; i++)  
    { 
        trace(contents[i].name, contents[i].size);  
    } 
} 

디렉토리 복사 및 이동

파일을 복사하거나 이동할 때와 동일한 메서드를 사용하여 디렉토리를 복사하거나 이동할 수 있습니다. 예를 들어 다음 코드에서는 디렉토리를 동기적으로 복사합니다.

var sourceDir:File = File.documentsDirectory.resolvePath("AIR Test"); 
var resultDir:File = File.documentsDirectory.resolvePath("AIR Test Copy"); 
sourceDir.copyTo(resultDir); 

copyTo() 메서드의 overwrite 매개 변수를 true로 지정하는 경우 대상 파일이 소스 디렉토리에 있는지 여부와 상관없이 기존 대상 디렉토리의 모든 파일 및 폴더가 삭제되고 소스 디렉토리의 파일 및 폴더로 대체됩니다.

copyTo() 메서드의 newLocation 매개 변수로 지정하는 디렉토리는 결과 디렉토리를 포함할 상위 디렉토리를 지정하지 않고 결과 디렉토리의 경로를 지정합니다.

자세한 내용은 파일 복사 및 이동 을 참조하십시오.

디렉토리 내용 삭제

File 클래스에는 deleteDirectory() 메서드 및 deleteDirectoryAsync() 메서드가 포함되어 있습니다. 이러한 메서드는 첫 번째는 동기식으로 작동하고 두 번째는 비동기적으로 작동하여 디렉토리를 삭제합니다. 자세한 내용은 AIR 파일 기본 사항 을 참조하십시오. 두 메서드 모두에는 deleteDirectoryContents 매개 변수(부울 값 사용)가 포함되어 있습니다. 이 매개 변수를 true 로 설정하고(기본값은 false ) 메서드를 호출하면 비어 있지 않은 디렉토리가 삭제됩니다. 그렇지 않으면 빈 디렉토리만 삭제됩니다.

예를 들어 다음 코드에서는 사용자 문서 디렉토리의 AIR Test 하위 디렉토리를 동기적으로 삭제합니다.

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.deleteDirectory(true); 

다음 코드에서는 사용자 문서 디렉토리의 AIR Test 하위 디렉토리를 비동기적으로 삭제합니다.

var directory:File = File.documentsDirectory.resolvePath("AIR Test"); 
directory.addEventListener(Event.COMPLETE, completeHandler) 
directory.deleteDirectoryAsync(true); 
 
function completeHandler(event:Event):void { 
    trace("Deleted.") 
} 

또한 시스템 휴지통으로 디렉토리를 이동하는 데 사용할 수 있는 moveToTrash() moveToTrashAsync() 메서드도 포함되어 있습니다. 자세한 내용은 휴지통으로 파일 이동 을 참조하십시오.