Найти файл в моем каталоге

#c# #path

#c# #путь

Вопрос:

Мне нужно получить путь к файлу, который находится в определенном каталоге.Пользователь выбирает csv-файл из OpenFileDialog. Если в файле csv есть поле, заканчивающееся на .txt, тогда возьмите путь к этому файлу и поместите его в переменную pathfile . Новый файл должен быть помещен пользователем в тот же каталог, что и файл csv.

РЕДАКТИРОВАТЬ: Как мне указать путь к файлу в переменной?

ПРАВКА2: файл может быть размещен везде, например: C://george.csv . Итак, я хочу взять текстовый текст из каталога c:// . Или, если файл находится здесь: C://Documents/anna.csv . Текст должен быть C://Documents/textfile.txt .

РЕДАКТИРОВАНИЕ 3: Файл 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;
}
  

Комментарии:

1. И в чем ваш вопрос / проблема, помимо вашего требования?

Ответ №1:

Попробуйте

 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. @Джордж Мано: четко скажите нам, что вам нужно. Вы спросили: «Как мне указать путь к файлу в переменной?» и я только что ответил. Итак, что не так?

2. Это сработало, добавив эти строки в мой код. string path = Path.GetDirectoryName(textBox1.Text); string g= Path.Combine(path, colB[j]); textBox2.Text = "path is : " g " " Environment.NewLine; Ваш код сделал несколько исключений, и я его не использовал.

Ответ №2:

Если вам нужно поместить текстовый файл (сгенерированный файл) в ту же папку, что и файл CSV, вы можете сохранить путь к файлу CSV и создать текстовый файл в той же папке.

Для этого вам может потребоваться иметь такую переменную:

 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 содержит путь к папке. Вы можете создать текстовый файл в этой папке. Это означает, что текстовый файл находится в той же папке, что и файл csv. Если вам нужно получить к нему доступ другим способом, вы можете объявить его в соответствующей области видимости.