빠른 시작: 파일 읽기 및 쓰기(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

StorageFile 개체를 사용하여 파일을 읽고 씁니다.

사전 요구 사항

예에서 사용되는 파일

이 예의 모든 코드는 파일 액세스 샘플(영문)에서 가져온 것이며 샘플의 전역 sampleFile 변수에 따라 다릅니다. 이 변수는 예의 샘플에서 쓰거나 읽는 파일(sample.dat)을 나타냅니다.

파일 액세스 샘플(영문)은 다음과 같이 sample.dat 파일을 만들고 반환된 storageFile 개체를 저장합니다.

Windows.Storage.ApplicationData.current.localFolder.createFileAsync("sample.dat",
    Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) {
        sampleFile = file;
    });

참고  라이브러리에 파일을 만들려면 앱 매니페스트에서 필요한 접근 권한 값을 선언해야 합니다. 파일 액세스 및 접근 권한 값에 대한 자세한 내용은 파일 액세스 및 사용 권한Windows 런타임을 사용하여 사용자 리소스에 액세스를 참조하세요.

 

파일에 쓰기

다음 단계에서는 쓰기 가능 파일과 이 파일을 나타내는 storageFile이 있는 경우 파일에 쓰는 방법을 보여 줍니다.

파일에 텍스트 쓰기

fileIO 클래스의 writeTextAsync 메서드를 호출하여 파일에 텍스트를 씁니다.

파일 액세스 샘플(영문)에서는 다음과 같이 writeTextAsync(file, contents)를 호출하여 sampleFile에 임의의 텍스트를 쓰는 방법을 보여 줍니다.

Windows.Storage.FileIO.writeTextAsync(sampleFile, "Swift as a shadow").then(function () {
    // Add code to do something after the text is written to the file
});

writeTextAsync 메서드에는 반환 값이 없지만 샘플에 나온 대로 파일에 텍스트를 쓴 후 then 또는 done을 사용하여 함수를 선언하고 추가 작업을 수행할 수 있습니다.

버퍼를 사용하여 파일에 바이트 쓰기

  1. 파일에 쓸 바이트 버퍼를 가져옵니다.

    예를 들어 파일 액세스 샘플(영문)에서는 다음과 같이 convertStringToBinary를 호출하여 임의의 문자열 기준으로 바이트 버퍼를 가져옵니다.

    var buffer = Windows.Security.Cryptography.CryptographicBuffer.convertStringToBinary(
        'What fools these mortals be', Windows.Security.Cryptography.BinaryStringEncoding['']
    );
    
  2. fileIO 클래스의 writeBufferAsync 메서드를 호출하여 파일에 버퍼의 바이트를 씁니다.

    파일 액세스 샘플(영문)에서는 다음과 같이 writeBufferAsync를 사용하여 sampleFile에 버퍼의 바이트를 쓰는 방법을 보여 줍니다.

    Windows.Storage.FileIO.writeBufferAsync(sampleFile, buffer).then(function () {
        // Add code to do something after the text is written to the file
    });
    

    writeBufferAsync에는 반환 값이 없지만 샘플에 나온 대로 파일에 텍스트를 쓴 후 then 또는 done을 사용하여 함수를 선언하고 추가 작업을 수행할 수 있습니다.

트랜잭션 스트림을 사용하여 파일에 텍스트 쓰기

  1. storageFile.openTransactedWriteAsync 메서드를 호출하여 파일 스트림을 엽니다. 이 메서드는 열기 작업이 완료되면 파일 내용의 스트림을 반환합니다.

    파일 액세스 샘플(영문)에서는 다음과 같이 storageFile.openTransactedWriteAsync 메서드를 호출하여 파일(sampleFile)에 대한 스트림을 여는 방법을 보여 줍니다.

    sampleFile.openTransactedWriteAsync().then(writeToStream);
    

    메서드가 완료된 후 파일에 쓸 수 있도록 다음과 같이 함수(예제: writeToStream)를 선언하여 transaction(형식 StorageStreamTransaction)을 캡처해야 합니다.

    function writeToStream(transaction) {
        // Add code to use the stream to write to your file
    }
    
  2. storageFile.openAsync 메서드가 완료된 후 파일에 텍스트를 쓰는 writeToStream 함수에 다음 단계에 따라 코드를 추가합니다.

    1. transaction을 사용하여 새 dataWriter 개체를 만들고 dataWriter.writeString 메서드를 호출하여 텍스트를 스트림에 씁니다.

      파일 액세스 샘플(영문)에서는 다음과 같이 스트림에 텍스트를 쓰는 방법을 보여 줍니다.

      var dataWriter = new Windows.Storage.Streams.DataWriter(transaction.stream);
      dataWriter.writeString("Swift as a shadow");
      
    2. dataWriter.storeAsynctransaction.commitAsync 메서드를 호출하여 텍스트를 파일에 저장하고 스트림을 닫습니다.

      파일 액세스 샘플(영문)에서는 다음과 같이 텍스트를 파일에 저장하고 스트림을 닫는 방법을 보여 줍니다.

      dataWriter.storeAsync().then(function () {
          transaction.commitAsync().done(function () {
              // Text in stream has been saved to the file
              transaction.close();
          });
      });
      

파일 액세스 샘플(영문)을 다운로드하여 함수 내의 컨텍스트에서 이러한 코드 예를 볼 수 있습니다.

파일에서 읽기

다음 단계에서는 읽기 가능 파일과 이 파일을 나타내는 storageFile이 있는 경우 파일에서 읽는 방법을 보여 줍니다.

파일에서 텍스트 읽기

fileIO 클래스의 readTextAsync 메서드를 호출하여 파일에서 텍스트를 읽습니다.

파일 액세스 샘플(영문)에서는 다음과 같이 sampleFile에서 읽을 readTextAsync(file)를 호출하여 파일에서 텍스트를 읽는 방법을 보여 줍니다.

Windows.Storage.FileIO.readTextAsync(sampleFile).then(function (contents) {
    // Add code to process the text read from the file
});

then 또는 done을 사용하여 파일에서 읽은 텍스트를 캡처 및 처리하는 함수를 선언할 수 있습니다. readTextAsync 메서드가 완료되면 텍스트가 이 함수에 String 개체(샘플의 contents)로 전달됩니다.

버퍼를 사용하여 파일에서 바이트 읽기

fileIO 클래스의 readBufferAsync 메서드를 호출하여 파일의 버퍼에서 바이트를 읽습니다.

파일 액세스 샘플(영문)에서는 다음과 같이 readBufferAsync를 호출하여 파일에서 버퍼의 바이트를 읽는 방법을 보여 줍니다.

Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
    // Add code to process the text read from the file
});

readBufferAsync 메서드가 완료된 후 then 또는 done을 사용하여 buffer(IBuffer 형식) 데이터를 캡처 및 처리하는 함수를 선언할 수 있습니다.

예를 들어 파일 액세스 샘플 (영문)에서는 다음과 같이 buffer를 캡처하고 dataReader 개체를 사용하여 buffer 길이를 읽습니다.

Windows.Storage.FileIO.readBufferAsync(sampleFile).then(function (buffer) {
    var dataReader = Windows.Storage.Streams.DataReader.fromBuffer(buffer);
    var output = dataReader.readString(buffer.length);
});

물론 이와 같이 buffer 길이를 읽는 것은 특별히 유용하지는 않지만 buffer 처리 방법을 결정할 때 마음껏 창의력을 발휘할 수 있습니다. dataReader 클래스에서 사용할 수 있는 메서드를 살펴보면 무엇을 할 수 있을지 이해할 수 있습니다.

스트림을 사용하여 파일에서 텍스트 읽기

  1. storageFile.openAsync 메서드를 호출하여 파일에서 스트림을 엽니다. 이 메서드는 열기 작업이 완료되면 파일 내용의 스트림을 반환합니다.

    파일 액세스 샘플(영문)에서는 다음과 같이 storageFile.openAsync 메서드를 호출하여 파일(sampleFile)에 대한 스트림을 여는 방법을 보여 줍니다.

    sampleFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(readFromStream);
    

    메서드가 완료된 후 다음과 같이 스트림에서 읽을 수 있도록 스트림(IRandomAccessStream 형식)을 캡처하는 함수(readFromStream 등)를 선언해야 합니다.

    function readFromStream(readStream) {
        // Add code to use the stream to read text from your file
    }
    
  2. storageFile.openAsync 메서드가 완료된 후 파일에서 텍스트를 읽는 readFromStream 함수에 다음 단계에 따라 코드를 추가합니다.

    1. readStream에서 읽을 dataReader 개체를 가져옵니다.

      파일 액세스 샘플(영문)에서는 다음과 같이 dataReader를 가져오는 방법을 보여 줍니다.

      var dataReader = new Windows.Storage.Streams.DataReader(readStream);
      
    2. dataReader.loadAsyncdataReader.readString 메서드를 호출하여 텍스트를 읽습니다.

      파일 액세스 샘플(영문)에서는 다음과 같이 텍스트를 읽는 방법을 보여 줍니다.

      
      dataReader.loadAsync(readStream.size).done(function (numBytesLoaded) {
          var fileContent = dataReader.readString(numBytesLoaded);
          // Process text read from the file
          dataReader.close();
      });
      

파일 액세스 샘플(영문)을 다운로드하여 함수 내의 컨텍스트에서 이러한 코드 예를 볼 수 있습니다.

요약 및 다음 단계

이제 파일을 나타내는 storageFile이 있는 경우 파일에서 읽고 쓰는 방법을 알게 되었습니다.

이미지 파일 작업에 대한 자세한 내용은 이미지 선택 및 표시 방법 또는 이미지를 디코드하는 방법Blob을 사용하여 콘텐츠 저장 및 로드 샘플(영문)을 참조하세요.

관련 항목

파일의 데이터 액세스

빠른 시작: 파일 선택기를 사용하여 파일에 액세스

이미지 선택 및 표시 방법

이미지를 디코드하는 방법

파일 액세스 및 사용 권한

파일 액세스 샘플

Blob을 사용하여 콘텐츠 저장 및 로드 샘플

참조

Windows.Storage.StorageFile class

Windows.Storage.Streams.DataReader class

Windows.Storage.Streams.DataWriter class