2016-03-23 7 views
0

Я сделал кнопку, поэтому, когда я нажимаю на нее, она открывает каталог, из которого я могу создать текстовый файл, я нажимаю кнопку , он открывает директорию в порядке, я могу назвать текстовый файл, который я хочу, и нажать «Сохранить», но затем я получаю сообщение об ошибке «Необработанное исключение типа« System.ArgumentException »произошло в mscorlib.dll»Невозможно создать текстовый файл в форме окна, получив ошибку «System.ArgumentException»

Это мой код:

private void createAlgorithmsAndComplexityNotesToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog sfd = new SaveFileDialog(); 
     sfd.Filter = "Text File|*.txt"; 
     sfd.FileName = "Algorithms And Complexity Lecture Notes"; 
     sfd.Title = "Algorithms And Complexity Lecture Notes"; 
     if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      string path = sfd.FileName; 
      StreamWriter write = new StreamWriter(File.Create("C:\\Users\antho\\Desktop\\Folder\\Uni\\Programming and data structures\\Assignment 2\\Modules")); 
      write.Write(writeFile); 
      write.Close(); 
     } 
    } 
+0

с помощью отладчика .. какая строка это ошибка? ..? это строка 'StreamWriter write = new StreamWriter (File.Create (« C: \\ Users \ antho \\ Desktop \\ Folder \\ Uni \\ Программирование и структуры данных \\ Назначение 2 \\ Модули ")); ' – MethodMan

+0

@MethodMan да, это та линия, она также говорит, что в пути есть незаконные символы. – Anthony

+0

Это потому, что у вас есть пробелы в вашем пути к файлу, вероятно, почему бы вам не попробовать написать путь к файлу, как '' @c: \ Users \ antho \ "' + путь, когда вы когда-либо используете путь ..meaning создание ' FileName' посмотрите на это сообщение, чтобы еще проще создать имя файла http://stackoverflow.com/questions/27823789/creating-text-file-in-c-sharp – MethodMan

ответ

0

Прежде всего введите свой путь в переменную и проверьте, существует ли каталог вообще (если нет, создайте его).

(обратите внимание на отдельные обратные слэши)

string path = @"C:\Users\antho\Desktop\Folder\Uni\Programming and data structures\Assignment 2\Modules"; 
string fileName = sfd.FileName; 

if (!Directory.Exists(path)) 
{ 
    Directory.CreateDirectory(path); 
} 

Во-вторых, использование Path.Combine() для построения путей. Путь, который вы установили в File.Create, должен заканчиваться именем файла.

Я также рекомендую использовать File.WriteAllText() для простого создания файла (например, в вашем коде). С этим вам не нужно беспокоиться о закрытии.

File.WriteAllText(Path.Combine(path, fileName), writeFile); 
0

Ваша проблема с указанным вами способом.

"C:\\Users\antho\\Desktop\\Folder\\Uni\\Programming and data structures\\Assignment 2\\Modules" 

Вы забыли, чтобы избежать обратной косой черты здесь: Users\antho.

В этом случае \a интерпретируется как один символ, который является незаконным в имени файла. Даже не уверен, что это уже существующий персонаж.