2016-03-23 29 views
0

Düğme tıklattığımda, bir metin dosyası oluşturabildiğim bir dizin açtığım için düğmeyi tıklıyorum. , dizini ince açar, ben istediğim metin dosyasını adlandırabilir ve kaydet 'i tıklatın, ama sonra "System.ArgumentException' türünü işlenmeyen bir özel durum 'mscorlib.dll oluştu" hatası veren bir hata alıyorum "Windows biçiminde bir metin dosyası oluşturulamıyor, hata alıyorum 'System.ArgumentException'

kodum: Herşeyden

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

.. hatayı ne fırlatır ..? bu satır 'StreamWriter yazma = yeni StreamWriter (File.Create (" C: \\ Kullanıcılar \ antho \\ Masaüstü \\ Klasör \\ Uni \\ Programlama ve veri yapıları \\ Atama 2 \\ Modüller ")); – MethodMan

+0

@MethodMan evet bu satır, aynı zamanda yoldaki Yasadışı karakterler olduğunu söylüyor. – Anthony

+0

dosya yolunuzda boşluklarınız olması muhtemeldir, neden yolu hiç kullanmıyorsunuz? "@ C: \ Users \ antho \" '+ yolu gibi bir dosya yoluna yazmayı denemeyin. FileName 'http://stackoverflow.com/questions/27823789/creating-text-file-in-c-sharp – MethodMan

cevap

0

İlk (değilse, onu oluşturmak) bir değişkene yolunu koymak ve dizin hiç var olmadığını kontrol edin.

(tek eğik dikkat edin) yolları oluşturmak için

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

İkinci olarak, kullanım Path.Combine(). File.Create içinde ayarladığınız yol, bir dosya adıyla bitmelidir.

Ayrıca, basit bir dosya oluşturma (kodunuzda olduğu gibi) için File.WriteAllText() yöntemini kullanmanızı da öneririm. Bununla kapanmakla uğraşmak zorunda değilsiniz.

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

Sorununuz, sağladığınız dosya yoludur. Users\antho:

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

Burada bir ters eğik çizgi kaçış unuttum.

Bu durumda, \a, dosya adında geçersiz olan tek bir karakter olarak yorumlanır. Varolan bir karakter olduğundan emin bile değil. Hata ayıklayıcıyı kullanarak