모든 파일은 디스크에 있는 바이트의 집합입니다. ActionScript에서 파일의 데이터는 항상 ByteArray로 표시될 수 있습니다. 예를 들어 다음 코드에서는 파일의 데이터를
bytes
라는 ByteArray 객체로 읽어 옵니다.
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completeHandler);
myFileStream.openAsync(myFile, FileMode.READ);
var bytes:ByteArray = new ByteArray();
function completeHandler(event:Event):void
{
myFileStream.readBytes(bytes, 0, myFileStream.bytesAvailable);
}
마찬가지로 다음 코드에서는
bytes
라는 ByteArray의 데이터를 파일에 씁니다.
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.open(myFile, FileMode.WRITE);
myFileStream.writeBytes(bytes, 0, bytes.length);
그러나 데이터를 ActionScript ByteArray 객체에 저장하지 않는 경우가 종종 있습니다. 그리고 데이터 파일이 지정된 파일 형식인 경우가 종종 있습니다.
예를 들어 파일의 데이터가 텍스트 파일 형식이고 이러한 데이터를 String 객체로 표시하려고 할 수 있습니다.
이 때문에 FileStream 클래스에는 ByteArray 객체 외의 유형에서 데이터를 읽고 쓰기 위한 읽기 및 쓰기 메서드가 포함되어 있습니다. 예를 들어 다음 코드에서처럼
readMultiByte()
메서드를 사용하여 파일에서 데이터를 읽고 문자열로 저장할 수 있습니다.
var myFile:File = File.documentsDirectory.resolvePath("AIR Test/test.txt");
var myFileStream:FileStream = new FileStream();
myFileStream.addEventListener(Event.COMPLETE, completed);
myFileStream.openAsync(myFile, FileMode.READ);
var str:String = "";
function completeHandler(event:Event):void
{
str = myFileStream.readMultiByte(myFileStream.bytesAvailable, "iso-8859-1");
}
readMultiByte()
메서드의 두 번째 매개 변수는 ActionScript에서 데이터를 해석하기 위해 사용하는 텍스트 형식(이 예제에서는 "iso-8859-1")을 지정합니다. Adobe AIR에서는 일상적인 문자 집합 인코딩이 지원됩니다(
지원되는 문자 집합
참조).
또한 FileStream 클래스에는 UTF-8 문자 세트를 사용하여 읽기 버퍼의 데이터를 문자열로 읽는
readUTFBytes()
메서드가 포함되어 있습니다. UTF-8 문자 세트의 문자는 길이가 다양하므로
progress
이벤트에 응답하는 메서드에서는
readUTFBytes()
를 사용하지 마십시오. 그럴 경우 읽기 버퍼 끝에 있는 데이터는 불완전한 문자를 표시할 수 있습니다. 가변 길이 문자 인코딩과 함께
readMultiByte()
메서드를 사용하는 경우도 마찬가지입니다. 따라서 FileStream 객체가
complete
이벤트를 전달할 때 전체 데이터 집합을 읽습니다.
또한 텍스트 파일의 String 객체로 작업하기 위한
writeMultiByte()
및
writeUTFBytes()
와 같은 유사한 메서드가 있습니다.
readUTF()
및
writeUTF()
메서드(
readUTFBytes()
및
writeUTFBytes()
와 혼동해서는 안 됨)도 파일의 텍스트 데이터를 읽고 쓰지만 텍스트 데이터 앞에 표준 텍스트 파일에는 일반적으로 없는 텍스트 데이터의 길이를 지정하는 데이터가 옵니다.
일부 UTF로 인코딩된 텍스트 파일은 엔디안 및 인코딩 형식(예: UTF-16 또는 UTF-32)을 정의하는 "UTF-BOM"(바이트 순서 표시) 문자로 시작됩니다.
텍스트 파일 읽기 및 쓰기에 대한 예제는
예제: XML 파일을 XML 객체로 읽기
를 참조하십시오.
readObject()
및
writeObject()
는 복잡한 ActionScript 객체의 데이터를 저장 및 검색하는 편리한 방법입니다. 이 경우 데이터가 AMF(ActionScript Message Format)로 인코딩됩니다. Adobe AIR, Flash Player, Flash Media Server, Flex Data Services에는 이 형식으로 데이터를 작업할 수 있는 API가 포함되어 있습니다.
이 외에도
readDouble()
및
writeDouble()
과 같은 몇 가지 다른 읽기 및 쓰기 메서드가 있습니다. 그러나 이러한 메서드를 사용하는 경우 파일 형식이 이러한 메서드에서 정의하는 데이터 형식과 일치하는 지 확인해야 합니다.
파일 형식이 단순한 텍스트 형식보다 복잡한 경우가 종종 있습니다. 예를 들어 MP3 파일에는 MP3 파일과 관련된 압축 해제 및 디코딩 알고리즘으로만 해석할 수 있는 압축 데이터가 포함되어 있습니다. 또한 MP3 파일에는 파일에 대한 메타태그 정보(노래 제목 및 가수 등)를 포함하는 ID3 태그도 포함되어 있을 수 있습니다. 여러 버전의 ID3 형식이 있지만 가장 단순한 형식(ID3 버전 1)에 대해
예제: 임의 액세스를 사용하여 데이터 읽기 및 쓰기
단원에서 설명합니다.
이미지, 데이터베이스, 응용 프로그램 문서 등을 위한 다른 파일 형식은 구조가 다르므로 ActionScript에서 이러한 데이터를 작업하려면 데이터의 구성 방법에 대해 알고 있어야 합니다.