Получить все файлы из папки и их информацию - PullRequest
0 голосов
/ 30 октября 2018

Итак, я создал sample.txt через UWP и скопировал / вставил sample2.pdf и sample3.mp4 в локальную папку моего приложения UWP.

Так что сейчас у меня есть эти 3 файла в моей папке.

Затем я создал класс, который должен сохранить filename, extension, id and modifiedDate

Теперь я хочу создать список этого класса с информацией о файлах примеров. Примером переменной класса будет: filename = sample, extension = .txt, id = sample, modified date = 30.10.2018 09:00

Как бы я это сделал?

Мой код на данный момент:

public sealed partial class MainPage : Page
{
    Windows.Storage.StorageFolder storageFolder;
    Windows.Storage.StorageFile sampleFile;
    List<FileElements> fileInformation = new List<FileElements>();

    public MainPage()
    {
        this.InitializeComponent();
        moth();
    }

    async void moth()
    {
        storageFolder =
            Windows.Storage.ApplicationData.Current.LocalFolder;
        sampleFile =
            await storageFolder.CreateFileAsync("sample.txt",
                Windows.Storage.CreationCollisionOption.ReplaceExisting);
    }

    public class FileElements
    {
        public string filename { get; set; }
        public string extension { get; set; }
        public string id { get; set; }
        public string modifiedDate { get; set; }
    }
}

Я пытался выяснить это с помощью метода foreach(), но он не работает

"оператор foreach не может работать с переменными типа StorageFile, поскольку StorageFile не содержит открытого определения для GetEnumerator"

1 Ответ

0 голосов
/ 30 октября 2018

DirectoryInfo().GetFiles() возвращает массив FileInfo(), который содержит всю необходимую информацию, поэтому вы можете выбирать из нее любым удобным вам способом:

var result = System.IO.DirectoryInfo dir = new DirectoryInfo(dirPath);
             dir.GetFiles().Select((x,i) => new FileElements {
                filename = Path.GetFileNameWithoutExtension(x.FullName),
                extension = x.Extension,
                id = i.ToString(),
                modifiedDate = x.LastWriteTime.ToString()
            });

Изменить (с учетом вашего комментария):

приведенный выше результат - IEnumerable<FileElements>, который не поддерживает индексирование, но его можно использовать в цикле foreach. однако вы можете преобразовать его в FileElements [] просто с помощью .ToArray(), чтобы иметь возможность использовать индексирование:

var result = System.IO.DirectoryInfo dir = new DirectoryInfo(dirPath);
                 dir.GetFiles().Select((x,i) => new FileElements {
                    filename = Path.GetFileNameWithoutExtension(x.FullName),
                    extension = x.Extension,
                    id = i.ToString(),
                    modifiedDate = x.LastWriteTime.ToString()
                }).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...