WinRT 앱에서 작동하는 즉 비동기 API를 사용하는 간단한 IsEmpty(StorageFolder directory)
메소드를 만들고 싶습니다. documentation for the StorageFolder class에 관련 방법이 표시되지 않으며 검색시 아무 것도 발견하지 못했습니다. 내가 놓친다면 미안해! WinRT (비동기 API)에서 디렉토리가 비어 있는지 확인하는 간단한 방법
public static async Task<bool> IsEmpty(StorageFolder directory)
{
var files = await directory.GetFilesAsync();
if (files.Count > 0)
{
return false;
}
var folders = await directory.GetFoldersAsync();
if (folders.Count > 0)
{
return false;
}
return true;
}
을하지만 ... 깨끗한 방법은 무엇입니까? 네이티브 또는 코드를 작성할 수 있습니다 ... 디렉터리가 비어 있는지 확인하는 것이 간단해야하지만 WinRT의 비동기 API를 사용하여 디렉터리 또는 파일이 있는지 간단히 확인하려고 할 때 문제가 발생한다는 것을 알고 있습니다. .
GetFilesAsync 및 GetFoldersAsync에 대한 비동기 호출이 반환되기 전에 디렉토리의 모든 파일/폴더를 가져 오는지 또는 Count가 0보다 높다는 것을 인식하기 전에 어떻게 든 하나의 항목 만 가져올 수 있는지 확실하지 않습니다. 나는 하스켈 언어 에서처럼 게으른 평가를 생각하고있다. 그러나 이것은 C#이다 ...). 그들이 할 수 있다면, 나는이 방법으로 더 평화로울 것입니다 :)
가능한 복제본으로 간주되는 [link] (http://stackoverflow.com/questions/755574/how-to-quickly-check-if-folder-is-empty-net)는 이전 API와 관련이 있으며, WinRT에서 사용할 수 없습니다. 새 API에서 제공하는 비동기 메소드를 사용해야합니다. – CanisLupus
중첩 폴더가 있거나 중첩 된 빈 디렉토리가 있으면 빈 것으로 간주합니까? –
내가 만든 메서드에서와 같이 IsEmpty를 디렉터리 위에 호출하면 그 안에 폴더 나 파일이 없으면 true를 반환해야합니다. 폴더가 안에 있으면 해당 폴더가 비어 있더라도 비어 있지 않습니다. – CanisLupus