위치에서 파일 및 폴더를 가져오는 방법(JavaScript 및 HTML로 작성된 Metro 스타일 앱)
[이 설명서는 임시 설명서로 변경될 수 있습니다.]
폴더, 라이브러리, 장치 또는 네트워크 위치와 같은 특정 위치에 있는 파일 및 폴더를 가져옵니다.
사전 요구 사항
상위 폴더 가져오기
특정 폴더의 내용 목록을 가져오려면 먼저 폴더를 가져와야 합니다.
Metro 스타일 앱 샘플 홈 페이지에 있는 FolderEnumeration 샘플에서는 사진 라이브러리를 가져옵니다.
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
이전 예에서는 KnownFolders를 사용해 사진 라이브러리를 가져왔습니다(StorageFolder 개체로서). 라이브러리, 장치 또는 네트워크 위치 등 여러 사용자 리소스를 나타내는 폴더를 가져오려면 KnownFolders 속성을 사용할 수 있습니다.
중요 라이브러리, 장치 또는 네트워크 위치에 액세스하기 위해 KnownFolders 속성을 사용하려면 앱 매니페스트에 해당 기능이 있어야 합니다. 기능에 대한 자세한 내용은 Windows 런타임을 사용하여 사용자 리소스에 액세스 및 빠른 시작: 파일 작업 수행을 참조하세요.
폴더 내용 목록 가져오기
Metro 스타일 앱 샘플 홈 페이지에 있는 FolderEnumeration 샘플에서는 사진 라이브러리의 항목 목록을 가져옵니다.
picturesLibrary.getItemsAsync().then(function (items) {
앞의 예와 같이 getItemsAsync()를 호출하여 폴더(StorageFolder 개체)의 모든 내용 목록을 가져올 수 있습니다. 일부 항목이 필요하지 않은 경우 getItemsAsync(startIndex, maxItemsToRetrieve)를 호출하여 인덱스별로 일정 범위의 폴더 내용을 가져올 수 있습니다.
getItemsAsync 메서드를 폴더에 대해 호출하는 경우 받는 항목 목록은 해당 폴더의 파일 및 하위 폴더로 제한되고 이러한 하위 폴더에 포함된 파일 및 폴더는 포함하지 않습니다.
폴더의 파일 목록이 필요하면 getFilesAsync 메서드를 호출할 수 있고, 폴더 목록이 필요하면 getFoldersAsync 메서드를 호출할 수 있습니다.
가져오기 작업 후에 then을 사용하여 받은 개체 목록을 사용하는 함수(이전 예제의 items
)를 정의하고 필요한 추가 작업을 수행합니다.
목록 작업
Metro 스타일 앱 샘플 홈 페이지에 있는 FolderEnumeration 샘플에서는 사진 라이브러리에 있는 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
도우미 함수에 전달하지만 여러 추가 작업도 수행할 수 있습니다.
컨텍스트 정보와 outputHeader
및 output
함수의 작동 방식을 알아보려면 Metro 스타일 앱 샘플 홈 페이지에서 FolderEnumeration 샘플을 다운로드하세요.
전체 예제
// 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);
}
});
});
관련 항목
Windows 런타임을 사용하여 사용자 리소스에 액세스
참조
Windows.Storage.KnownFolders class
Windows.Storage.StorageFile class