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