在我的目录中查找文件

时间:2011-10-11 09:27:23

标签: c# path

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

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

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;
}

2 个答案:

答案 0 :(得分:3)

尝试

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 "";
}

答案 1 :(得分:0)

如果您需要将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文件。这意味着txt文件与csv文件位于同一文件夹中。如果您需要使用其他方法访问它,可以在相关范围内声明它。