在我的目录中找到一个文件

本文关键字:一个 文件 我的 | 更新日期: 2023-09-27 18:10:51

我需要得到一个文件的路径,这是在一个特定的目录。用户从OpenFileDialog中选择csv文件。如果csv文件具有以.txt结尾的字段,则获取该文件的路径并将其放入pathfile变量中。新文件必须由用户放置在与csv文件相同的目录中。

EDIT: 如何将文件的路径放在变量中?

EDIT2:文件可以放在任何地方,例如:C://george.csv。所以我想从目录c://中取出一个txt文件。或者如果文件在这里:C://Documents/anna.csv。文本必须为C://Documents/textfile.txt

EDIT3:用户打开的csv文件位于c://Documents/gonow.csv"gonow.csv"文件为:one, two, tree, four, textfile.txt, five, six, seven。当一个字段的扩展名为.txt时,程序必须执行并捕获该路径。在本例中,路径为c://Documents/textfile.txt

  private void button3_Click(object sender, EventArgs e)
            {
                string filename = "";
            DialogResult result = openFileDialog2.ShowDialog();
            if (result == DialogResult.OK)
            {
                filename = openFileDialog2.FileName;
                textBox3.Text = filename;
                System.IO.StreamReader file2 = new System.IO.StreamReader(textBox3.Text); 
}
}
    private void button2_Click(object sender, EventArgs e)
            {
        if (Path.GetExtension(colB[j]) == ".csv")
       textBox2.Text += " comma separated, in line " + j + "" + Environment.NewLine;
}

在我的目录中找到一个文件

Try

string path = Path.GetDirectoryName(filename);

根据您的EDIT3编辑:
使用此函数打开csv文件并获得新的完整文件名。

private string GetFilename(string csvFilename)
{
    string path = Path.GetDirectoryName(csvFilename);
    string[] lines = File.ReadAllLines(csvFilename);
    foreach (string line in lines)
    {
        string[] items = line.Split(',');
        string txt = items.First(item => item.ToLower().Trim().EndsWith(".txt"));
        if (!String.IsNullOrEmpty(txt)) 
            return Path.Combine(path, txt);
    }
    return "";
}

如果需要将txt文件(生成的文件)与CSV文件放在同一个文件夹中,可以将CSV文件的路径存放,并在该文件夹中创建txt文件。

要做到这一点,你可能需要有一个这样的变量:

private void button3_Click(object sender, EventArgs e)
    {
        string filename = "";
        string FolderPath;
        DialogResult result = openFileDialog2.ShowDialog();
        if (result == DialogResult.OK)
        {
            filename = openFileDialog2.FileName;
            FolderPath = Path.GetDirectoryName(filename);
            textBox3.Text = filename;
            System.IO.StreamReader file2 = new System.IO.StreamReader(textBox3.Text); 
        }
    }
private void button2_Click(object sender, EventArgs e)
    {
        if (Path.GetExtension(colB[j]) == ".csv")
            textBox2.Text += " comma separated, in line " + j + "" + Environment.NewLine;
    }

FolderPAth变量保存文件夹的路径。您可以在此文件夹中创建文本文件。这意味着txt文件与csv文件在同一个文件夹中。如果你需要在不同的方法中访问它,你可以在相关的作用域中声明它。