OpenFileDialog 永久存储文件

Posted

技术标签:

【中文标题】OpenFileDialog 永久存储文件【英文标题】:OpenFileDialog store files permanently 【发布时间】:2021-08-22 13:49:36 【问题描述】:

是否可以在 WPF 中存储您使用 OpenFileDialog 打开的文件?目前,我有这段代码可以从计算机打开一个文件并在列表框中显示它的目录:

private void UploadEmployeeRank1_Click(object sender, RoutedEventArgs e)
    
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Multiselect = true;
        openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        if (openFileDialog.ShowDialog() == true)
        
            foreach (string filename in openFileDialog.FileNames)
                employeeRank1PrivateMaterialsListBox.Items.Add(filename);
        
    

但是,一旦我关闭应用程序并再次打开,我在 listBox 中加载的文件就消失了。我如何让它留下来?

【问题讨论】:

docs.microsoft.com/en-us/dotnet/csharp/programming-guide/… 以某种方式存储文件的位置(例如应用程序设置、json 文件等)并在加载应用程序时将其读入内存。 是否可以将其存储在SQL表中? 如果您愿意,可以。 OpenFileDialog 返回的文件名只是一个字符串,它是文件的路径——你可以将它存储在任何你想要的地方。 【参考方案1】:

OpenFileDialog 实际上并不加载文件。它会返回所选文件的路径。所以最后你只需要保存这些字符串。 一种简单快捷的方法是将它们写入本地文件。

这里有两个函数可以在文件中保存和加载文件路径。

private void SaveFiles()

    if (listBox1.Items.Count > 0)
    
        StringBuilder files = new StringBuilder();

        foreach (var file in listBox1.Items)
        
            files.AppendLine(file.ToString());
        

        File.WriteAllText("myfiles.txt", files.ToString());
    


private void LoadFiles()

    if (File.Exists("myfiles.txt"))
    
        string[] files = File.ReadAllLines("myfiles.txt");
        listBox1.Items.AddRange(files);
    

SaveFiles() 函数从列表框中加载文件并将每个路径保存为文本文件中的新行。 LoadFiles() 函数解析文件并将数据加载到列表框中。

【讨论】:

以上是关于OpenFileDialog 永久存储文件的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第XXX篇 基本文件操作----和永久存储

c# 使用Openfiledialog的问题

(小甲鱼python)文件永久存储(上)总结 python文件永久存储(创建打开文件文件对象的各种方法及含义)

wpf打开文夹和打开文件

c# OpenFileDialog 退出

比Open更适合读取文件的Python内置模块