빠른 시작: 프로그래밍 방식으로 파일 액세스(HTML)

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

폴더, 라이브러리, 장치 또는 네트워크 위치와 같은 위치에 있는 파일 및 폴더에 액세스합니다. 파일 및 폴더 쿼리를 작성하여 위치에 있는 파일 및 폴더를 쿼리할 수도 있습니다.

사전 요구 사항

  • JavaScript로 작성한 Windows 런타임 앱의 비동기 프로그래밍 이해

    비동기 앱 작성 방법에 대한 자세한 내용은 빠른 시작: JavaScript에서 promise 사용을 참조하세요.

  • 위치에 대한 액세스 권한

    예를 들어 이 예제의 코드에서는 사진 라이브러리 권한이 필요하지만 사용자 위치에는 다른 접근 권한 값이 필요하거나 아무 접근 권한 값도 필요하지 않을 수 있습니다. 자세한 내용은 파일 액세스 및 사용 권한을 참조하세요. 파일 선택기를 사용하여 파일 및 폴더에 액세스하는 방법에 대한 자세한 내용은 빠른 시작: 파일 선택기를 사용하여 파일에 액세스를 참조하세요.

위치의 최상위 파일 및 폴더 열거

  1. 위치를 나타내는 StorageFolder 가져오기

    특정 폴더의 내용 목록을 가져오려면 먼저 해당 위치를 나타내는 StorageFolder 개체를 가져와야 합니다.

    폴더 열거 샘플(영문)에서는 사진 라이브러리를 가져오는 방법을 보여 줍니다.

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    이전 예에서는 KnownFolders를 사용해 사진 라이브러리를 가져왔습니다(StorageFolder 개체로서). 라이브러리, 장치 또는 네트워크 위치 등 여러 사용자 리소스를 나타내는 폴더를 가져오려면 KnownFolders 속성을 사용할 수 있습니다.

    중요  라이브러리, 장치 또는 네트워크 위치에 액세스하기 위해 KnownFolders 속성을 사용하려면 앱 매니페스트에 해당 접근 권한 값이 있어야 합니다. 파일 액세스 및 접근 권한 값에 대한 자세한 내용은 파일 액세스 및 사용 권한Windows 런타임을 사용하여 사용자 리소스에 액세스를 참조하세요.

     

  2. 폴더 내용 목록 가져오기

    폴더 열거 샘플(영문)에서는 사진 라이브러리에서 항목 목록을 가져오는 방법을 보여 줍니다.

    picturesLibrary.getItemsAsync().then(function (items) {
    

    앞의 예와 같이 getItemsAsync()를 호출하여 폴더(StorageFolder 개체)의 모든 내용 목록을 가져올 수 있습니다. 일부 항목이 필요하지 않은 경우 getItemsAsync(startIndex, maxItemsToRetrieve)를 호출하여 인덱스별로 일정 범위의 폴더 내용을 가져올 수 있습니다.

    getItemsAsync 메서드를 폴더에 대해 호출하는 경우 받는 항목 목록은 해당 폴더의 파일 및 하위 폴더로 제한되고 이러한 하위 폴더에 포함된 파일 및 폴더는 포함하지 않습니다.

    폴더의 파일 목록이 필요하면 getFilesAsync 메서드를 호출할 수 있고, 폴더 목록이 필요하면 getFoldersAsync 메서드를 호출할 수 있습니다.

    가져오기 작업 후에 then을 사용하여 받은 개체 목록을 사용하는 함수(이전 예제의 items)를 정의하고 필요한 추가 작업을 수행합니다.

  3. 목록 작업

    폴더 열거 샘플(영문)에서는 사진 라이브러리에서 items 목록으로 추가 작업을 수행하는 방법을 보여 줍니다.

    
        outputHeader(picturesLibrary.name, items.size);
        items.forEach(function (item) { 
            if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
                output(id(picturesLibrary.name), item.name + "\\"); 
            } 
            else { 
                output(id(picturesLibrary.name), item.fileName); 
            } 
        });
    

    앞의 예에서는 폴더의 name 및 목록의 size를 도우미 함수에 전달하여 사용자에게 이 정보를 표시합니다.

    또한 이전 예와 같이 항목 목록을 반복하여 추가 작업을 수행할 수 있습니다. 항목의 목록에 대해 forEach를 호출하여 목록의 항목을 반복할 수 있습니다. forEach에 전달하는 함수는 목록 항목을 인수로 사용해야 하며 목록의 모든 item에 대해 실행됩니다.

    항목에 대한 메서드를 개별적으로 호출하여 item을 추가로 처리할 수 있습니다. 이전 예에서는 item가 폴더(StorageFolder 개체)인지 또는 파일(StorageFile 개체)인지 결정하기 위해 파일 및 폴더 모두에 있는 isOfType 메서드의 결과를 StorageItemTypes 열거 값과 비교합니다. 이 비교를 통해 항목에 대한 여러 정보를 output 도우미 함수에 전달하지만 여러 추가 작업도 수행할 수 있습니다.

    추가 컨텍스트와 outputHeaderoutput 함수의 작동 방식을 보려면 폴더 열거 샘플(영문)을 다운로드하세요.

마쳤으면 코드는 다음과 같습니다.


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

//  Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
    // Then perform tasks with the list of files and folders that was retrieved

    // For example, display name of containing folder and count of items in folder
    outputHeader(picturesLibrary.name, items.size);

    // For example, display info for each item
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    }); 
});

위치에서 파일 쿼리

  1. 상위 폴더 가져오기

    특정 폴더의 내용 목록을 가져오려면 먼저 폴더를 가져와야 합니다.

    폴더 열거 샘플(영문)에서는 사진 라이브러리를 가져오는 방법을 보여 줍니다.

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    이전 예에서는 KnownFolders를 사용해 사진 라이브러리를 가져왔습니다(StorageFolder 개체로서). 라이브러리, 장치 또는 네트워크 위치 등 여러 사용자 리소스를 나타내는 폴더를 가져오려면 KnownFolders 속성을 사용할 수 있습니다.

    중요  라이브러리, 장치 또는 네트워크 위치에 액세스하기 위해 KnownFolders 속성을 사용하려면 앱 매니페스트에 해당 접근 권한 값이 있어야 합니다. 파일 액세스 및 접근 권한 값에 대한 자세한 내용은 파일 액세스 및 사용 권한Windows 런타임을 사용하여 사용자 리소스에 액세스를 참조하세요.

     

  2. 폴더 쿼리를 만들어 지정하는 대로 파일 구성

    폴더에서 폴더 쿼리를 만들면 해당 폴더 및 그 하위 폴더의 파일이 지정하는 기준에 따라 그룹으로 구성됩니다. 결과 그룹은 파일 시스템의 폴더 기능을 모두 가지므로 필요에 따라 그 안의 폴더를 가져오거나 처리할 수 있습니다.

    폴더 열거 샘플(영문)에서는 사진 라이브러리의 사진을 찍거나 만든 월별로 그룹화하는 폴더 쿼리를 만드는 방법을 보여 줍니다.

    var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);
    

    이전 예에서처럼 폴더에 대해 createFolderQuery(query)를 호출하여 폴더 쿼리(StorageFolderQueryResult 개체)를 만들면 지정하는 CommonFolderQuery 값을 기준으로 해당 폴더 및 하위 폴더의 파일을 가상 폴더로 구성할 수 있습니다. 이 예에서는 picturesLibrary 폴더의 사진 파일을 찍거나 만든 월(CommonFolderQuery.groupByMonth)을 기준으로 가상 폴더로 그룹화합니다.

    createFolderQuery() 또는 createFolderQueryWithOptions를 호출하여 폴더 쿼리를 만들 수도 있습니다.

  3. 쿼리에서 가상 폴더 목록 가져오기

    앱 샘플 홈페이지에 있는 FolderEnumeration 샘플에서는 query를 사용하여 가상 폴더 목록을 가져옵니다.

    
    query.getFoldersAsync().then(function (monthList) {
        monthList.forEach(function (month) { 
    

    이전 예에서처럼 폴더 쿼리에 대해 getFoldersAsync()를 호출하여 가상 폴더 목록을 가져올 수 있습니다. then을 사용하여 목록을 처리하는 함수를 정의합니다. 이 예에서는 쿼리에서 월을 나타내는 가상 폴더 목록 monthList를 반환하고 목록을 처리하기 위해 monthList.forEach를 호출하고 각 month 폴더를 처리하는 함수를 정의합니다.

  4. 가상 폴더의 파일 목록 가져오기

    폴더 열거 샘플(영문)에서는 month 폴더를 사용하여 해당 월에 찍거나 만든 사진의 목록을 가져오는 방법을 보여 줍니다.

    
            var tempMonthName = month.name; 
            month.getFilesAsync().then(function (files) {
    

      가상 폴더(month)에 대한 정보를 저장해야만 나중에 사용할 수 있습니다. 이전 예제에서는 가상 폴더의 이름(month.name)을 tempMonthName에 저장하므로 사진 목록(files)을 처리할 때 이 정보를 사용할 수 있습니다.

     

    then을 사용하여 받는 파일 목록을 처리하는 함수를 정의합니다.

마쳤으면 코드는 다음과 같습니다.


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; 

// Create query
var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth); 

// Get virtual folders from query
query.getFoldersAsync().then(function (monthList) { 
    monthList.forEach(function (month) {
 
        var tempMonthName = month.name;
        // Get files from virtual folder 
        month.getFilesAsync().then(function (files) { 
            // Then perform tasks with retrieved files
        }); 
    }); 
});

요약 및 다음 단계

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

파일 선택기를 통해 파일에 액세스하는 방법에 대한 자세한 내용은 빠른 시작: 파일 선택기를 사용하여 파일에 액세스를 참조하세요.

관련 항목

데이터 및 파일 액세스

파일 액세스 및 사용 권한

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

빠른 시작: 파일 읽기 및 쓰기

프로그래밍 방식 파일 검색 샘플

폴더 열거 샘플

파일 액세스 샘플

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

참조

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.StorageItemTypes enum

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class