FilePicker 以字符串形式返回名称和路径

Posted

技术标签:

【中文标题】FilePicker 以字符串形式返回名称和路径【英文标题】:FilePicker return name and path as strings 【发布时间】:2019-02-10 18:58:10 【问题描述】:

我有一个文件保存和文件打开选择器,我现在正在尝试集成将路径和文件名保存为公共变量的能力,该变量将通过不同的方法等在整个项目中使用。

我目前有一个 SaveFileClassOpenFileClass

我已经看到了使用 OpenFileDialog 返回保存目录的示例,尽管我不相信这些示例适合我所追求的。也许是某种形状或形式,但对于我目前使用的 FileOpenPicker 和 FileSavePicker 似乎没有多大意义。

我目前拥有的(减去返回目录)是这样的:

public async Task<IStorageFile> OpenFileAsync()

    FileOpenPicker openPicker = new FileOpenPicker
    
        ViewMode = PickerViewMode.List,
        SuggestedStartLocation = PickerLocationId.DocumentsLibrary
    ;

    openPicker.FileTypeFilter.Add(".txt");
    openPicker.FileTypeFilter.Add(".csv");

    return await openPicker.PickSingleFileAsync();

这会传回主页面。

在这里,我想有一个变量来存储选定的文件路径和选定的文件名作为字符串。当涉及到快速保存/自动保存以及构建我的类以加载文件时,这些将在项目中使用。

我只是在关注 FilePicker 是否具有此功能,因为在尝试将其与我的场景集成时,我对文档的理解有点有限。

【问题讨论】:

【参考方案1】:

您的OpenFileAsync 方法返回一个选定的IStorageFile,这个方法有一个Name 属性,可以让您获得文件的名称,包括文件扩展名和一个Path 属性,可以让您获得完整的文件系统文件的路径。你可以用这些值做任何你想做的事情:

private async void OpenFile_Click(object sender, RoutedEventArgs e)

    OpenFileClass instance = new OpenFileClass();
    IStorageFile file = await instance.OpenFileAsync();
    if (file != null)
    
        string fileName = file.Name;
        string filePath = file.Path;
    

【讨论】:

为了跨多个类使用文件名和文件路径,是否需要将 void 设置为 Public static Async Void?

以上是关于FilePicker 以字符串形式返回名称和路径的主要内容,如果未能解决你的问题,请参考以下文章

以字符串形式获取 lambda 函数的名称

使用Xamarin Filepicker插件上传文件

File类与序列化

io流浅谈

io流浅谈

java之IO流