我想使用2个不同的按钮。一个用于打开openfiledialog以供用户选择某个文件的按钮,然后他们可以单击生成按钮以使用所选文件将其所有内容添加到数组中。
如何让该文件路径在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);
答案 0 :(得分:1)
您需要一个文件,而不是多个文件,因此请删除Multiselect=true
或设置Multiselect=false
。只需一次选择,您就希望openFileDialog.FileName
存储在文本控件中...清理剩余的Choose_Click
。
Generate_Click
在某些方面有点混乱,但实际上接近你想要的:你对sThirdID
,sSiteName
和sFile
什么都不做,所以摆脱他们。你对文件名的处理有点令人困惑:在处理字符串文字时,你必须用正面和背面的双引号来表示它们;你还必须采取特殊措施来处理或逃避"反斜杠,除非您使用带有@
字符的整个字符串文字前面的特殊符号,表示verbatim string。但是,文本框中的文件名应该由用户从系统“打开”对话框中选择它们来设置,因此不需要对它们进行额外的处理。
因此,让我们选择您提供最详细信息的文件名并查看txtScriptFile.Text
:如果您将此文件名直接传递到File.ReadAllLines()
,它应该返回字符串数组就像你编写的一样... 提供用户在程序运行时选择了一个有效的文本文件(例如,这个项目的源代码文件之一)
接下来就是,一旦你加载了文件,你对字符串数组做了什么?如果不以某种方式显示程序的结果,很难验证您是否成功完成了任务。