从文件夹获取所有文件及其信息

时间:2018-10-30 08:37:20

标签: c# uwp storage

因此,我通过UWP创建了sample.txt,并在UWP应用的本地文件夹中复制/粘贴了sample2.pdfsample3.mp4

所以现在我的文件夹中有这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 :(得分:4)

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循环中使用。但是,您只需通过.ToArray()即可将其转换为FileElements []以便能够使用索引:

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();