2013-10-26 4 views
1

Я пытаюсь объединить все эти строки в путь для моей программы, чтобы сохранить документ. Ничего необычного. но каждый раз, когда я иду для сохранения файла при отладке, он создает папку с именем после файла и ничего не делает. Я чувствую, что это простая проблема, но я не могу найти, как ее исправить. Помоги пожалуйста!C# Проблемы с сохранением файлов

мой код

private void btnSave_Click(object sender, EventArgs e) 
{ 
    string strNotes = rtbNotes.Text.ToString(); 
    string strUser = txtUser.Text.ToString() + "\\"; 
    string strClass = txtClass.Text.ToString() + "\\"; 
    string strDate = DateTime.Today.Date.ToString("dd-MM-yyyy"); 
    string strLocation = "C:\\Users\\My\\Desktop\\Notes\\"; 
    string strType = txtType.Text.ToString(); 
    string strFile = strLocation + strUser + strClass + strDate; 
    string subPath = strFile + "." + strType; 
    bool isExists = System.IO.Directory.Exists(subPath); 
    if (!isExists) 
     System.IO.Directory.CreateDirectory(subPath); 
    System.IO.File.WriteAllText(strFile, strNotes); 
} 
+0

У вас есть проверка путей? subPath выглядит как файл, а не каталог – Sam

+0

Этот код должен создать каталог с полным именем +. Затем он должен создать файл без расширения, содержащего strNotes. (если не возникает ошибка) –

ответ

1

Во-первых, ваш путь strLocation недействителен:

C: \ Users \ My \ Desktop \ Notes \

Во-вторых вы передаете весь файл путь (включая имя файла/расширение) в Directory.Exists, поэтому он фактически проверяет, существует ли папка с именем «12/12/13.txt» (вы должны просто передать путь к папке).

Затем Вы пытаетесь записать файл, но передавая то, что должно быть путем к каталогу ...

Вы используете отладчик для пошагового вашего кода? Это поможет.

private void button1_Click(object sender, EventArgs e) 
     { 
      string strNotes = "Some test notes."; 
      string strUser = "someuser" + "\\"; 
      string strClass = "SomeClass" + "\\"; 
      string strDate = DateTime.Today.Date.ToString("dd-MM-yyyy"); 
      string strLocation = "C:\\Users\\My\\Desktop\\Notes\\"; 
      string strType = "txt"; 
      string strFile = strLocation + strUser + strClass + strDate; // ... this is: C:\Users\My\Desktop\Notes\ 
      string subPath = strFile + "." + strType; // .. this is: C:\Users\My\Desktop\Notes\someuser\SomeClass\26-10-2013.txt 
      bool isExists = System.IO.Directory.Exists(subPath); // ... Checks directory: C:\Users\My\Desktop\Notes\ exists... 
      if (!isExists) 
       System.IO.Directory.CreateDirectory(subPath); // ... Creates directory: C:\Users\My\Desktop\Notes\ ... 
      System.IO.File.WriteAllText(strFile, strNotes); // ... Writes file: this is: C:\Users\My\Desktop\Notes\26-10-2013 ... 
     } 
+0

На самом деле, я думаю, 'strFile' не является каталогом, а в файле отсутствует его расширение. –

+0

Ах да .. хорошее место ... Я скопировал и вставил пути к папке из отладчика, отредактировал! – BenjaminPaul

+0

Я прошел через это, как вы сказали, и изменил вокруг строки записи и создания папки, и это сработало! Спасибо огромное! –

0

Вам нужно отладить и посмотреть значение Subpath. Похоже, что это устанавливается в значение вашего предполагаемого имени файла, но без расширения.

Я думаю, что вы должны были

string subPath = strLocation + strUser + strClass + strDate; 
string strFile = subPath + "." + strType; 
Смежные вопросы