Dave Kreskowiak
Во - первых, с какой стати ты звонишь .ToString() на a .Свойство text, которое возвращает строку!?
Далее, CurrentDirectory не должен использоваться ни для чего, так как он может измениться без вашего ведома. Например, покажите OpenFileDialog, и вы позволите пользователю напрямую изменить "текущий каталог", просто перейдя в файловую систему в этом диалоговом окне. Им даже не нужно выбирать файл для открытия! Это не единственный способ изменения "текущего каталога", а лишь один из примеров того, как это возможно.
Еще одна проблема с CurrentDirectory заключается в том, что он может указывать на папку, в которой пользователь вашего приложения не имеет прав на создание/запись файла, например в разделе ProgramFiles.
В любом случае, вы, по крайней мере, создаете полный путь к файлу, и это хорошо. То, как вы это делаете, в одной строке кода может привести к проблемам. Разбейте эти операции на блоки отладочного кода.
string filename = textbox1.Text;
if (filename.Length == 0)
{
// There's nothing in the textbox, so no filename was specified.
// You might want to tell the user that.
}
// Does the path already have a file extension?
if (!Path.HasExtension(filename))
{
// Nope. We'll append our own.
filename += ".sql";
}
// Start with a "well-known" path.
string saveFilePath = Environment.GetFolderPath(SpecialFolder.CommonDocuments);
saveFilePath = Path.Combine(saveFilePath, filename);
Разбивая операции, создающие путь, вы можете пошагово Просмотреть код, чтобы увидеть данные, с которыми имеет дело каждая операция, просто наведя курсор мыши на переменную в отладчике при пошаговом просмотре кода.
Member 14355624
Файл должен быть создан с именем, которое я передаю в textbox1 .в SQL extesnion
строка tableName = texttablename.Текст;
строка file_path = "C:\\Users\\vas\\Desktop\\";
строка saveFilePath = путь.Комбинат(путь_к_файлу,имятаблицы);
TextWriter wr = новый StreamWriter(saveFilePath);
водонепроницаемые.Писать(combinedscript.Текст);
водонепроницаемые.Рядом();
Dave Kreskowiak
Ну и что?
Просто отредактируйте то, что я опубликовал, чтобы добавить расширение ".sql" к имени файла, если оно еще не существует. Манипуляции со строками очень просты и еще более упрощаются методами, предоставляемыми классом Path.
Aaaaannndddd вы можете легко получить путь к папке рабочего стола пользователя с помощью среды.Метод GetFolderPath. Просто измените "CommonDocuments" на "DesktopDirectory".
Member 14355624
строковое имя файла = texttablename.Текст;
если (именем.Длина == 0)
{
// В текстовом поле ничего нет, поэтому имя файла не было указано.
// Возможно, вы захотите сказать об этом пользователю.
}
// Есть ли у пути уже расширение файла?
если (!путь.HasExtension(имя файла))
{
// Нет. Мы добавим наши собственные.
именем += ".в SQL";
}
/ Начните с "хорошо известного" пути.
строка saveFilePath = путь.Комбинат(Справочник.GetParent(System.IO.Directory.GetCurrentDirectory()).Родитель.Полное имя, имя файла);
TextWriter wr = новый StreamWriter(saveFilePath);
водонепроницаемые.Писать(combinedscript.Текст);
водонепроницаемые.Рядом();
я сделал то, что вы сказали, братан, но тогда также файл создается без имени, но расширение .sql показывает
подскажите, как его получить
Dave Kreskowiak
Нет, ты не знал. Вы просто добавили свой код к моему и надеялись, что он будет работать, даже не пытаясь понять, что происходит.