如何从 openfiledialog 读取文件路径到包含文件的数组

How to read a filepath from a openfiledialog to an array of the containing file

我想使用 2 个不同的按钮。为用户打开一个打开文件对话框的一个按钮 select 某个文件,然后他们可以单击生成按钮使用文件 selected 将其所有内容添加到数组中。

如何让该文件路径在 System.IO.ReadAllLines(filepath)

中工作

我有打开文件对话框的代码:

private void btnChoose_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog1.Filter = "Text Files (.txt)|*.txt";
    openFileDialog1.FilterIndex = 1;
    openFileDialog1.Multiselect = true;


    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        string sFileName = openFileDialog.FileName;
        string[] arrAllFiles = openFileDialog.FileNames;  
        txtScriptfile.Text = arrAllFiles[0];
    }

        }

这里我想在读取所有行时使用文件路径:

private void btnGenerate_Click(object sender, EventArgs e)
{

    string sThirdID = "";
    string sSiteName = "";
    string sFile = "";
    FilePathScript = "@\"" + txtScriptfile.Text + "\"";
    FilePathSite = "@\"" + txtSiteFile.Text +"\"";
    FilePathDestinationFolder = "@\"" + txtdestinationFolder.Text + "\"";
    txtScriptfile.Text = FilePathScript;
    txtSiteFile.Text = FilePathSite;
    txtdestinationFolder.Text = FilePathDestinationFolder;

    string[] Scriptlines = System.IO.File.ReadAllLines(FilePathScript);
    string[] Sitelines = System.IO.File.ReadAllLines(FilePathSite);

您需要一个文件,而不是多个文件,因此删除 Multiselect=true 或设置 Multiselect=false。对于单个 select,您希望将 openFileDialog.FileName 存储在您的文本控件中...清理其余的 Choose_Click

Generate_Click 在某些方面有点乱,但实际上接近您想要的:您对 sThirdIDsSiteName 和 [=17= 什么都不做],所以摆脱他们。您对文件名的处理有点混乱:在处理字符串文字时,您必须用前后双引号来表示它们;您还必须采取特殊步骤来处理或 "escape" 反斜杠,除非您使用特殊符号在整个字符串文字前面加上 @ 字符,表示 verbatim string。但是,文本框中的文件名应该由用户 select 从系统“打开”对话框中设置,因此不需要对它们进行额外处理。

所以让我们取一个您提供了最详细信息的文件名并查看它,txtScriptFile.Text:如果您将这个文件名直接传递给 File.ReadAllLines(),它应该 return 字符串数组,就像你写的那样...... 提供 用户 select 在程序 运行 时编辑了一个有效的文本文件(例如,一个例如,该项目的源代码文件)。

那么接下来的事情就是,加载文件后,您将如何处理字符串数组?如果不以某种方式显示程序的结果,将很难验证您是否成功完成了任务。