다음 예제에서는 XML 데이터가 포함된 텍스트 파일을 읽고 쓰는 방법을 보여 줍니다.
파일을 읽으려면 다음과 같이 File 및 FileStream 객체를 초기화하고, FileStream의
readUTFBytes()
메서드를 호출하고 문자열을 XML 객체로 변환합니다.
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var prefsXML:XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
마찬가지로 파일에 데이터를 쓰려면 적절한 File 및 FileStream 객체를 설정한 다음 FileStream 객체의 쓰기 메서드를 호출하면 됩니다. 다음 코드에서와 같이 문자열 버전의 XML 데이터를 쓰기 메서드에 전달합니다.
var prefsXML:XML = <prefs><autoSave>true</autoSave></prefs>;
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var outputString:String = '<?xml version="1.0" encoding="utf-8"?>\n';
outputString += prefsXML.toXMLString();
fileStream.writeUTFBytes(outputString);
fileStream.close();
이 예제에서는 파일이 UTF-8 형식인 것으로 가정하고
readUTFBytes()
및
writeUTFBytes()
메서드를 사용합니다. 그렇지 않은 경우 다른 메서드를 사용해야 합니다. 자세한 내용은
데이터 형식 및 사용할 읽기 및 쓰기 메서드 선택
을 참조하십시오.
이전 예제에서는 동기 작업용으로 연 FileStream 객체를 사용합니다. 또한 파일을 비동기 작업용으로 열 수도 있습니다. 이 경우 이벤트에 응답하는 이벤트 리스너 함수가 필요합니다. 예를 들어 다음 코드에서는 XML 파일을 비동기적으로 읽는 방법을 보여 줍니다.
var file:File = File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream:FileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE, processXMLData);
fileStream.openAsync(file, FileMode.READ);
var prefsXML:XML;
function processXMLData(event:Event):void
{
prefsXML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
}
processXMLData()
메서드는 전체 파일을 읽기 버퍼로 읽어 온 경우(FileStream 객체가
complete
이벤트를 전달할 때) 호출됩니다. 이 메서드는
readUTFBytes()
메서드를 호출하여 읽은 데이터의 문자열 버전을 가져오고 해당 문자열을 기반으로 XML 객체
prefsXML
을 만듭니다.
이러한 기능을 보여 주는 샘플 응용 프로그램을 보려면
XML 환경 설정 파일 읽기 및 쓰기
를 참조하십시오.