AIR의 File 객체 작업Adobe AIR 1.0 이상 File 객체는 파일 시스템에 있는 파일 또는 디렉토리에 대한 포인터입니다. File 클래스는 FileReference 클래스를 확장합니다. AIR은 물론 Adobe® Flash® Player에서도 사용할 수 있는 FileReference 클래스는 파일에 대한 포인터를 나타내지만 File 클래스는 보안 문제로 인해 Flash Player(브라우저에서 실행 중인 SWF)에서 노출되지 않는 속성 및 메서드를 추가합니다. File 클래스다음과 같은 작업에 File 클래스를 사용할 수 있습니다.
File 객체가 파일 경로를 가리키면 FileStream 클래스를 사용하여 파일 데이터를 읽고 쓸 수 있습니다. File 객체가 아직 없는 파일이나 디렉토리의 경로를 가리킬 수 있습니다. 파일이나 디렉토리를 만들 때 이러한 File 객체를 사용할 수 있습니다. File 객체의 경로각 File 객체에는 각각 해당 경로를 지정하는 두 개의 속성이 있습니다.
File 클래스에는 Mac OS, Windows 및 Linux의 표준 디렉토리를 가리키기 위한 다음과 같은 정적 속성이 포함되어 있습니다.
참고: 플랫폼에서 데스크톱, 문서 또는 사용자 디렉토리에 대한 표준 위치를 정의하지 않는 경우 File.documentsDirectory, File.desktopDirectory 및 File.userDirectory는 서로 같은 디렉토리를 참조할 수 있습니다.
이러한 속성들은 운영 체제에 따라 다양한 값을 갖습니다. 예를 들어 Mac 및 Windows는 사용자 데스크톱 디렉토리의 기본 경로가 각각 다릅니다. 그러나 File.desktopDirectory 속성은 모든 플랫폼에서 적합한 디렉토리 경로를 가리킵니다. 여러 플랫폼에 걸쳐 작동하는 응용 프로그램에 쓰기를 수행하려면 이러한 속성에 기반하여 해당 응용 프로그램에서 사용하는 다른 디렉토리와 파일을 참조할 수 있습니다. 그런 다음 resolvePath() 메서드를 사용하여 경로를 세부적으로 지정하십시오. 예를 들어 이 코드는 아래의 응용 프로그램 저장소 디렉토리에서 preferences.xml 파일을 가리킵니다. var prefsFile:File = File.applicationStorageDirectory; prefsFile = prefsFile.resolvePath("preferences.xml"); File 클래스를 통해 특정 파일 경로를 가리킬 수 있지만 그렇게 하면 응용 프로그램을 서로 다른 플랫폼에 걸쳐 사용하지 못할 수 있습니다. 예를 들어 C:\Documents and Settings\joe\와 같은 경로는 Windows 운영 체제에서만 사용할 수 있습니다. 이러한 경우를 피하기 위해 File.documentsDirectory 같은 File 클래스의 정적 속성을 사용하는 것이 좋습니다.
이러한 디렉토리의 실제 기본 경로는 운영 체제 및 컴퓨터 구성에 따라 다릅니다. 이 표에 나온 경로는 일반적인 예일 뿐입니다. 응용 프로그램이 모든 플랫폼에서 제대로 작동하려면 항상 적합한 정적 File 클래스 속성을 사용하여 이러한 디렉토리를 참조해야 합니다. 실제 AIR 응용 프로그램에서 위 표에 나온 applicationID 및 filename의 값은 응용 프로그램 설명자로부터 가져 옵니다. 응용 프로그램 설명자에서 제작자 ID를 지정하면 해당 제작자 ID는 이와 같은 경로의 응용 프로그램 ID에 추가됩니다. userName의 값은 설치를 실행한 사용자의 계정 이름입니다. TV용 AIR 응용 프로그램의 디렉토리 보기TV용 AIR 장치의 시스템 파일에 보안을 제공하기 위해 AIR 응용 프로그램은 제한된 디렉토리 집합에만 액세스할 수 있습니다. TV용 AIR에서 응용 프로그램은 그 밖의 다른 디렉토리에 액세스할 수 없습니다. 또한 TV용 AIR에서 각 AIR 응용 프로그램에 대한 각 사용자별 데이터는 서로 격리되어 있습니다. AIR 응용 프로그램은 ActionScript 3.0에서만 사용할 수 있는 디렉토리 이름을 사용합니다. 이 이름은 장치상의 실제 디렉토리를 나타내지 않습니다. TV용 AIR는 이러한 ActionScript 3.0 디렉토리 이름을 실제 장치 디렉토리에 매핑합니다. 이러한 매핑은 TV용 AIR 응용 프로그램이 해당 응용 프로그램에 속하지 않는 로컬 파일에 악의적으로 또는 실수로 액세스하는 것을 방지합니다. ActionScript 3.0 디렉토리 이름은 다음과 같습니다.
응용 프로그램에서 금지된 디렉토리에 액세스하려고 하면 런타임에 ActionScript 코드가 Catch할 수 있는 예외가 발생합니다. 다음 표는 다양한 File 속성 및 메서드의 File.nativePath 값을 보여 줍니다. 각 값은 응용 프로그램이 장치의 파일 시스템에서 제한적으로 볼 수 있는 디렉토리를 나타냅니다.
또한 TV용 AIR 장치에서 다음 메서드의 비헤이비어를 알아 두십시오.
File 객체로 디렉토리 가리키기디렉토리를 가리키도록 File 객체를 설정하는 여러 방법이 있습니다. 사용자 홈 디렉토리 가리키기File 객체로 사용자 홈 디렉토리를 가리킬 수 있습니다. 다음 코드에서는 홈 디렉토리의 AIR Test 하위 디렉토리를 가리키도록 File 객체를 설정합니다. var file:File = File.userDirectory.resolvePath("AIR Test"); 사용자 문서 디렉토리 가리키기File 객체로 사용자 문서 디렉토리를 가리킬 수 있습니다. 다음 코드에서는 문서 디렉토리의 AIR Test 하위 디렉토리를 가리키도록 File 객체를 설정합니다. var file:File = File.documentsDirectory.resolvePath("AIR Test"); 바탕 화면 디렉토리 가리키기File 객체로 바탕 화면을 가리킬 수 있습니다. 다음 코드에서는 바탕 화면의 AIR Test 하위 디렉토리를 가리키도록 File 객체를 설정합니다. var file:File = File.desktopDirectory.resolvePath("AIR Test"); 응용 프로그램 저장소 디렉토리 가리키기File 객체로 응용 프로그램 저장소 디렉토리를 가리킬 수 있습니다. 모든 AIR 응용 프로그램에 대해 응용 프로그램 저장소 디렉토리를 정의하는 연결된 고유한 경로가 있습니다. 이 디렉토리는 각 응용 프로그램 및 사용자에 대해 고유합니다. 이 디렉토리에는 사용자별, 응용 프로그램별 데이터(예: 사용자 데이터 또는 환경 설정 파일)를 저장할 수 있습니다. 예를 들어 다음 코드에서는 File 객체로 응용 프로그램 저장소에 포함된 환경 설정 파일 prefs.xml을 가리킵니다. var file:File = File.applicationStorageDirectory; file = file.resolvePath("prefs.xml"); 일반적으로 응용 프로그램 저장소 디렉토리 위치는 사용자 이름 및 응용 프로그램 ID에 따라 결정됩니다. 다음 파일 시스템 위치는 응용 프로그램을 디버그하는 데 도움이 됩니다. 이러한 디렉토리의 파일을 확인하려면 항상 File.applicationStorage 속성 또는 app-storage: URI 스킴을 사용해야 합니다.
참고: 응용 프로그램에 제작자 ID가 있는 경우 해당 제작자 ID는 응용 프로그램 저장소 디렉토리 경로의 일부로도 사용됩니다.
File.applicationStorageDirectory로 만든 File 객체의 URL(및 url 속성)에서는 다음과 같이 app-storage URL 스킴을 사용합니다. 자세한 내용은 지원되는 AIR URL 스킴을 참조하십시오. var dir:File = File.applicationStorageDirectory; dir = dir.resolvePath("preferences"); trace(dir.url); // app-storage:/preferences 응용 프로그램 디렉토리 가리키기File 객체로 응용 프로그램이 설치된 디렉토리(응용 프로그램 디렉토리라고 함)를 가리킬 수 있습니다. File.applicationDirectory 속성을 사용하여 이 디렉토리를 참조할 수 있습니다. 이 디렉토리를 사용하여 응용 프로그램과 함께 설치되는 응용 프로그램 설명자 파일이나 기타 리소스를 검토할 수 있습니다. 예를 들어 다음 코드에서는 File 객체로 응용 프로그램 디렉토리에 있는 images라는 디렉토리를 가리킵니다. var dir:File = File.applicationDirectory; dir = dir.resolvePath("images"); File.applicationDirectory로 만든 File 객체의 URL(및 url 속성)에서는 다음과 같이 app URL 스킴을 사용합니다. 자세한 내용은 지원되는 AIR URL 스킴을 참조하십시오. var dir:File = File.applicationDirectory; dir = dir.resolvePath("images"); trace(dir.url); // app:/images 참고: Android에서 응용 프로그램 패키지의 파일은 nativePath를 통해서 액세스할 수 없습니다. nativePath 속성이 빈 문자열입니다. 응용 프로그램 디렉토리에 있는 파일에 액세스하려면 기본 경로가 아니라 항상 URL을 사용해야 합니다.
파일 시스템 루트 가리키기File.getRootDirectories() 메서드는 Windows 컴퓨터에서 C: 및 마운트된 볼륨과 같은 모든 루트 볼륨을 나열합니다. Mac OS 및 Linux에서 이 메서드는 항상 시스템의 고유한 루트 디렉토리("/" 디렉토리)를 반환합니다. StorageVolumeInfo.getStorageVolumes() 메서드는 마운트된 저장소 볼륨에 대해 보다 자세한 정보를 제공합니다(저장소 볼륨을 사용한 작업 참조). 참고: Android에서 파일 시스템의 루트는 읽을 수 없습니다. 디렉토리를 참조하는 File 객체와 함께 기본 경로 '/'가 반환되지만 해당 객체의 속성은 정확한 값을 갖지 않습니다. 예를 들어 spaceAvailable은 항상 0입니다.
명시적 디렉토리 가리키기다음 예제(Windows의 경우)와 같이 File 객체의 nativePath 속성을 설정하여 File 객체로 명시적 디렉토리를 가리킬 수 있습니다. var file:File = new File(); file.nativePath = "C:\\AIR Test"; 중요: 이 방법으로 명시적 경로를 가리킬 경우 특정 플랫폼에만 사용할 수 있는 코드가 작성될 수 있습니다. 예를 들어 위 예제는 Windows에서만 사용할 수 있습니다. File 객체의 정적 속성(예: File.applicationStorageDirectory)를 이용하면 플랫폼에 관계없이 사용할 수 있는 디렉토리를 찾을 수 있습니다. 그런 다음 resolvePath() 메서드(다음 단원 참조)를 사용하여 상대 경로로 이동합니다. 상대 경로 탐색resolvePath() 메서드를 사용하여 지정된 다른 경로에 상대적인 경로를 가져올 수 있습니다. 예를 들어 다음 코드에서는 사용자 홈 디렉토리의 "AIR Test" 하위 디렉토리를 가리키도록 File 객체를 설정합니다. var file:File = File.userDirectory; file = file.resolvePath("AIR Test"); 또한 File 객체의 url 속성을 사용하여 다음과 같이 URL 문자열을 기반으로 디렉토리를 가리킬 수 있습니다. var urlStr:String = "file:///C:/AIR Test/"; var file:File = new File() file.url = urlStr; 자세한 내용은 File 경로 수정을 참조하십시오. 사용자가 디렉토리를 찾아 선택할 수 있도록 설정File 클래스에는 사용자가 객체에 할당할 디렉토리를 선택할 수 있는 시스템 대화 상자를 표시하는 browseForDirectory() 메서드가 포함되어 있습니다. browseForDirectory() 메서드는 비동기적입니다. 이 메서드는 사용자가 디렉토리를 선택하고 [열기] 버튼을 클릭하는 경우 select 이벤트를 전달하거나 [취소] 버튼을 클릭하는 경우 cancel 이벤트를 전달합니다. 예를 들어 다음 코드에서는 사용자가 디렉토리를 선택할 수 있게 하고 경로 선택 시 디렉토리 경로를 출력합니다. var file:File = new File(); file.addEventListener(Event.SELECT, dirSelected); file.browseForDirectory("Select a directory"); function dirSelected(e:Event):void { trace(file.nativePath); } 참고: Android에서 browseForDirectory() 메서드는 지원되지 않습니다. 이 메서드를 호출해도 아무런 효과가 없으며 즉시 cancel 이벤트가 전달됩니다. 사용자가 디렉토리를 선택할 수 있도록 하려면 사용자 정의를 통해 응용 프로그램에서 정의되는 대화 상자를 사용해야 합니다.
응용 프로그램이 호출된 디렉토리 가리키기응용 프로그램이 호출될 때 전달된 InvokeEvent 객체의 currentDirectory 속성을 확인하여 응용 프로그램이 호출된 디렉토리 위치를 가져올 수 있습니다. 자세한 내용은 명령줄 인수 캡처를 참조하십시오. File 객체로 파일 가리키기File 객체가 가리키는 파일을 설정하는 여러 방법이 있습니다. 명시적 파일 경로 가리키기중요: 명시적 경로를 가리킬 경우 특정 플랫폼에만 사용할 수 있는 코드가 작성될 수 있습니다. 예를 들어 C:/foo.txt와 같은 경로는 Windows에서만 사용할 수 있습니다. File 객체의 정적 속성(예: File.applicationStorageDirectory)를 이용하면 플랫폼에 관계없이 사용할 수 있는 디렉토리를 찾을 수 있습니다. 그런 다음 resolvePath() 메서드(File 경로 수정 참조)를 사용하여 상대 경로로 이동합니다. 다음과 같이 File 객체의 url 속성을 사용하여 URL 문자열을 기반으로 파일 또는 디렉토리를 가리킬 수 있습니다. var urlStr:String = "file:///C:/AIR Test/test.txt"; var file:File = new File() file.url = urlStr; 또한 다음과 같이 File() 생성자 함수에 URL을 전달할 수도 있습니다. var urlStr:String = "file:///C:/AIR Test/test.txt"; var file:File = new File(urlStr); url 속성은 항상 URI로 인코딩된 버전의 URL(예: 공백을 "%20으로 대체)을 반환합니다. file.url = "file:///c:/AIR Test"; trace(file.url); // file:///c:/AIR%20Test 또한 File 객체의 nativePath 속성을 사용하여 명시적 경로를 설정할 수도 있습니다. 예를 들어 다음 코드는 Windows가 설치된 컴퓨터에서 실행할 경우 File 객체를 C: 드라이브의 AIR Test 하위 디렉토리에 있는 test.txt 파일로 설정합니다. var file:File = new File(); file.nativePath = "C:/AIR Test/test.txt"; 또한 다음과 같이 이 경로를 File() 생성자 함수에 전달할 수도 있습니다. var file:File = new File("C:/AIR Test/test.txt"); 슬래시(/) 문자를 nativePath 속성의 경로 구분 기호로 사용합니다. Windows의 경우 백슬래시(\) 문자를 사용할 수도 있지만 그렇게 하면 응용 프로그램을 서로 다른 플랫폼에 걸쳐 사용하지 못할 수 있습니다. 자세한 내용은 File 경로 수정을 참조하십시오. 디렉토리의 파일 열거File 객체의 getDirectoryListing() 메서드를 사용하여 디렉토리 루트 레벨의 파일 및 하위 디렉토리를 가리키는 File 객체 배열을 가져올 수 있습니다. 자세한 내용은 디렉토리 열거를 참조하십시오. 사용자가 파일을 찾아 선택할 수 있도록 설정File 클래스에는 사용자가 객체에 할당할 파일을 선택할 수 있는 시스템 대화 상자를 표시하는 다음 메서드가 포함되어 있습니다.
이러한 각각의 메서드는 비동기적입니다. browseForOpen() 및 browseForSave() 메서드는 사용자가 파일(또는 browseForSave()의 경우 대상 경로)을 선택하면 select 이벤트를 전달합니다. browseForOpen() 및 browseForSave() 메서드에서는 대상 File 객체 선택 시 선택한 파일을 가리킵니다. browseForOpenMultiple() 메서드는 사용자가 파일을 선택할 때 selectMultiple 이벤트를 전달합니다. selectMultiple 이벤트는 FileListEvent 유형이며 선택한 파일을 가리키는 File 객체 배열인 files 속성을 갖습니다. 예를 들어 다음 코드에서는 사용자가 파일을 선택할 수 있는 [열기] 대화 상자를 표시합니다. var fileToOpen:File = File.documentsDirectory; selectTextFile(fileToOpen); function selectTextFile(root:File):void { var txtFilter:FileFilter = new FileFilter("Text", "*.as;*.css;*.html;*.txt;*.xml"); root.browseForOpen("Open", [txtFilter]); root.addEventListener(Event.SELECT, fileSelected); } function fileSelected(event:Event):void { trace(fileToOpen.nativePath); } browse 메서드를 호출할 때 응용 프로그램에 다른 브라우저 대화 상자가 열러 있는 경우 런타임에서 Error 예외가 발생합니다. File 경로 수정또한 다음 예제와 같이 resolvePath() 메서드를 호출하거나 객체의 nativePath 또는 url 속성을 수정하여 기존 File 객체의 경로를 수정할 수도 있습니다(Windows의 경우). var file1:File = File.documentsDirectory; file1 = file1.resolvePath("AIR Test"); trace(file1.nativePath); // C:\Documents and Settings\userName\My Documents\AIR Test var file2:File = File.documentsDirectory; file2 = file2.resolvePath(".."); trace(file2.nativePath); // C:\Documents and Settings\userName var file3:File = File.documentsDirectory; file3.nativePath += "/subdirectory"; trace(file3.nativePath); // C:\Documents and Settings\userName\My Documents\subdirectory var file4:File = new File(); file4.url = "file:///c:/AIR Test/test.txt"; trace(file4.nativePath); // C:\AIR Test\test.txt nativePath 속성을 사용할 때는 슬래시(/) 문자를 디렉토리 분리 기호 문자로 사용합니다. Windows의 경우 백슬래시(\) 문자를 사용할 수도 있지만, 특정 플랫폼에서만 사용할 수 있는 코드가 작성될 수 있으므로 권장되지 않습니다. 지원되는 AIR URL 스킴AIR에서는 다음과 같은 URL 스킴을 사용하여 File 객체의 url 속성을 정의할 수 있습니다.
두 파일 간의 상대 경로 찾기getRelativePath() 메서드를 사용하여 두 파일 간의 상대 경로를 찾을 수 있습니다. var file1:File = File.documentsDirectory.resolvePath("AIR Test"); var file2:File = File.documentsDirectory file2 = file2.resolvePath("AIR Test/bob/test.txt"); trace(file1.getRelativePath(file2)); // bob/test.txt getRelativePath() 메서드의 두 번째 매개 변수인 useDotDot 매개 변수는 상위 디렉토리를 나타내는 .. 구문을 결과로 반환할 수 있습니다. var file1:File = File.documentsDirectory; file1 = file1.resolvePath("AIR Test"); var file2:File = File.documentsDirectory; file2 = file2.resolvePath("AIR Test/bob/test.txt"); var file3:File = File.documentsDirectory; file3 = file3.resolvePath("AIR Test/susan/test.txt"); trace(file2.getRelativePath(file1, true)); // ../.. trace(file3.getRelativePath(file2, true)); // ../../bob/test.txt 정규 버전의 파일 이름 가져오기파일 및 경로 이름은 Windows 및 Mac OS에서 대/소문자를 구분하지 않습니다. 다음에서 두 File 객체는 같은 파일을 가리킵니다. File.documentsDirectory.resolvePath("test.txt"); File.documentsDirectory.resolvePath("TeSt.TxT"); 그러나 문서 및 디렉토리 이름에는 대/소문자가 포함됩니다. 예를 들어 다음 예제에서는 문서 디렉토리에 AIR Test라는 폴더가 있다고 가정합니다. var file:File = File.documentsDirectory.resolvePath("AIR test"); trace(file.nativePath); // ... AIR test file.canonicalize(); trace(file.nativePath); // ... AIR Test canonicalize() 메서드는 파일 또는 디렉토리 이름에 올바른 대/소문자를 사용하도록 nativePath 객체를 변환합니다. Linux와 같이 대/소문자가 구분되는 파일 시스템에서 이름의 대/소문자만 다른 여러 파일이 있는 경우 canonicalize() 메서드는 파일 시스템에 의해 결정되는 순서로 검색된 첫 번째 파일과 일치하도록 경로를 조정합니다. 또한 다음 예제와 같이 canonicalize() 메서드를 사용하여 Windows에서 짧은 파일 이름("8.3" 이름)을 긴 파일 이름으로 변환할 수 있습니다. var path:File = new File(); path.nativePath = "C:\\AIR~1"; path.canonicalize(); trace(path.nativePath); // C:\AIR Test 패키지 및 심볼 링크 작업여러 운영 체제에서 패키지 파일과 심볼 링크 파일을 지원합니다. 패키지 - Mac OS에서는 디렉토리가 패키지로 지정될 수 있으며 Mac OS Finder에서 디렉토리가 아니라 하나의 파일로 표시됩니다. 심볼 링크 - Mac OS, Linux 및 Windows Vista는 심볼 링크를 지원합니다. 심볼 링크는 파일이 디스크에 있는 다른 파일이나 디렉토리를 가리키는 것을 허용합니다. 심볼 링크는 별칭과 비슷하긴 하지만 같지는 않습니다. 별칭은 항상 디렉토리가 아닌 파일로 보고되며, 별칭을 읽고 써도 해당 항목이 가리키는 원래 파일 또는 디렉토리는 전혀 영향을 받지 않습니다. 반면에 심볼 링크는 해당 항목이 가리키는 파일 또는 디렉토리와 똑같이 동작합니다. 파일 또는 디렉토리로 보고될 수 있으며, 심볼 링크를 읽거나 쓰면 심볼 링크 자체가 아니라 해당 항목이 가리키는 파일 또는 디렉토리에 영향을 줍니다. 또한 Windows에서는 교차점(NTFs 파일 시스템에서 사용됨)을 참조하는 File 객체에 대한 isSymbolicLink 속성이 true로 설정됩니다. File 클래스에는 File 객체가 패키지 또는 심볼 링크를 참조하는지 확인하기 위한 isPackage 및 isSymbolicLink 속성이 포함되어 있습니다. 다음 코드에서는 사용자 바탕 화면 디렉토리를 반복하여 패키지가 아닌 하위 디렉토리를 나열합니다. var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); for (var i:uint = 0; i < desktopNodes.length; i++) { if (desktopNodes[i].isDirectory && !!desktopNodes[i].isPackage) { trace(desktopNodes[i].name); } } 다음 코드에서는 사용자 바탕 화면 디렉토리를 반복하여 심볼 링크가 아닌 파일 및 디렉토리를 나열합니다. var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); for (var i:uint = 0; i < desktopNodes.length; i++) { if (!desktopNodes[i].isSymbolicLink) { trace(desktopNodes[i].name); } } canonicalize() 메서드는 링크가 참조하는 파일 또는 디렉토리를 가리키도록 심볼 링크의 경로를 변경합니다. 다음 코드에서는 사용자 바탕 화면 디렉토리를 반복하여 심볼 링크인 파일이 참조하는 경로를 보고합니다. var desktopNodes:Array = File.desktopDirectory.getDirectoryListing(); for (var i:uint = 0; i < desktopNodes.length; i++) { if (desktopNodes[i].isSymbolicLink) { var linkNode:File = desktopNodes[i] as File; linkNode.canonicalize(); trace(linkNode.nativePath); } } 볼륨에서 사용 가능한 공간 확인File 객체의 spaceAvailable 속성은 File 위치에서 사용 가능한 공간(바이트)입니다. 예를 들어 다음 코드에서는 응용 프로그램 저장소 디렉토리에서 사용 가능한 공간을 확인합니다. trace(File.applicationStorageDirectory.spaceAvailable); File 객체가 디렉토리를 참조하는 경우 spaceAvailable 속성은 해당 디렉토리에서 파일이 사용할 수 있는 공간을 나타냅니다. File 객체가 파일을 참조하는 경우 spaceAvailable 속성은 해당 파일이 커질 수 있는 공간을 나타냅니다. 해당 파일 위치가 존재하지 않으면 spaceAvailable 속성은 0으로 설정됩니다. File 객체가 심볼 링크를 참조하는 경우 spaceAvailable 속성은 심볼 링크가 가리키는 위치에서 사용 가능한 공간을 나타냅니다. 일반적으로 디렉토리나 파일에 사용할 수 있는 공간은 해당 디렉토리나 파일이 들어 있는 볼륨에서 사용 가능한 공간과 같습니다. 그러나 여유 공간에 계정 할당량 또는 디렉토리별 제한을 고려할 수 있습니다. 일반적으로 볼륨에 파일이나 디렉토리를 추가할 때는 파일의 실제 크기나 디렉토리 내용의 실제 크기보다 큰 공간이 필요합니다. 예를 들어 운영 체제에서 인덱스 정보를 저장할 추가 공간이 필요할 수 있습니다. 또는 필요한 디스크 섹터로 인해 추가 공간이 사용될 수 있습니다. 사용 가능한 공간은 동적으로 변경되기도 합니다. 따라서 보고된 파일 저장 공간이 모두 할당되지 않을 수도 있습니다. 파일 시스템에 쓰는 방법에 자세한 내용은 파일 읽기 및 쓰기를 참조하십시오. StorageVolumeInfo.getStorageVolumes() 메서드는 마운트된 저장소 볼륨에 대해 보다 자세한 정보를 제공합니다(저장소 볼륨을 사용한 작업 참조). 기본 시스템 응용 프로그램으로 파일 열기AIR 2에서는 운영 체제에서 해당 파일을 열도록 등록된 응용 프로그램을 사용하여 파일을 열 수 있습니다. 예를 들어 AIR 응용 프로그램에서는 DOC 파일을 열도록 등록된 응용 프로그램을 사용하여 DOC 파일을 열 수 있습니다. 파일을 열려면 File 객체의 openWithDefaultApplication() 메서드를 사용합니다. 예를 들어 다음 코드에서는 사용자의 데스크톱에서 test.doc라는 파일을 열며, DOC 파일에 대한 기본 응용 프로그램으로 이 파일을 엽니다. var file:File = File.deskopDirectory; file = file.resolvePath("test.doc"); file.openWithDefaultApplication(); 참고: Linux에서는 파일 이름 확장자가 아닌 파일의 MIME 유형에 따라 파일의 기본 응용 프로그램이 결정됩니다.
다음 코드에서는 사용자가 mp3 파일로 이동하여 mp3 파일 재생을 위한 기본 응용 프로그램으로 해당 파일을 열 수 있습니다. var file:File = File.documentsDirectory; var mp3Filter:FileFilter = new FileFilter("MP3 Files", "*.mp3"); file.browseForOpen("Open", [mp3Filter]); file.addEventListener(Event.SELECT, fileSelected); function fileSelected(e:Event):void { file.openWithDefaultApplication(); } 응용 프로그램 디렉토리에 있는 파일에는 openWithDefaultApplication() 메서드를 사용할 수 없습니다. AIR에서는 사용자가 openWithDefaultApplication() 메서드를 사용하여 특정 파일을 열 수 없습니다. Windows의 경우, AIR에서 사용자가 EXE 또는 BAT와 같은 특정 파일 유형을 열 수 없습니다. Mac OS 및 Linux의 경우 AIR가 특정 응용 프로그램에서 실행되는 파일을 열 수 없습니다. 이러한 응용 프로그램에는 Mac OS의 경우 Terminal 및 AppletLauncher, Linux의 경우 csh, bash 또는 ruby가 포함됩니다. openWithDefaultApplication() 메서드를 사용하여 이러한 파일 중 하나를 열려고 하면 예외가 발생합니다. 열 수 없는 파일 유형의 전체 목록은 File.openWithDefaultApplication() 메서드의 언어 참조 항목을 참조하십시오. 참고: 그러나 기본 설치 프로그램(확장 데스크톱 응용 프로그램)을 사용하여 설치된 AIR 응용 프로그램의 경우에는 이러한 제한이 없습니다. 자세한 내용은 기본 설치 프로그램에 AIR 응용 프로그램 패키지화를 참조하십시오.
|
|