2012-06-08 5 views
4

я написал следующий код для добавления данных с существующими данными, как это, но мой код перезаписать этотдобавить данные в существующий файл в C#

, что я должен делать изменения в коде добавления данных.

protected void Page_Load(object sender, EventArgs e) 
{ 
    fname = Request.Form["Text1"]; 
    lname = Request.Form["Text2"]; 
    ph = Request.Form["Text3"]; 
    Empcode = Request.Form["Text4"]; 

    string filePath = @"E:Employee.txt"; 
    if (File.Exists(filePath)) 
    { 
     //StreamWriter SW; 
     //SW = File.CreateText(filePath); 
     //SW.Write(text); 
     //SW.Close(); 
     FileStream aFile = new FileStream(filePath, FileMode.Create, FileAccess.Write); 
     StreamWriter sw = new StreamWriter(aFile); 
     sw.WriteLine(Empcode); 
     sw.WriteLine(fname); 
     sw.WriteLine(lname); 
     sw.WriteLine(ph); 
     sw.WriteLine("**********************************************************************"); 

     sw.Close(); 
     aFile.Close(); 
    } 
    else 
    { 
     //sw.Write(text); 
     //sw.Flush(); 
     //sw.Close(); 
     //StreamWriter SW; 
     //SW = File.AppendText(filePath); 
     //SW.WriteLine(text); 
     //SW.Close(); 

     FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write); 
     StreamWriter sw = new StreamWriter(aFile); 

     sw.WriteLine(Empcode); 
     sw.WriteLine(fname); 
     sw.WriteLine(lname); 
     sw.WriteLine(ph); 
     sw.WriteLine("**********************************************************************"); 

     sw.Close(); 
     aFile.Close(); 
     //System.IO.File.WriteAllText(filePath, text); 
    } 
    Response.Write("Employee Add Successfully........."); 
} 

ответ

11

The doc для FileMode.Append говорит:

Открывает файл, если он существует, и стремится конец файла или создает новый файл. Для этой операции требуется разрешение FileIOPermissionAccess.Append. FileMode.Append может использоваться только совместно с FileAccess.Write. Попытка поиска позиции до конца файла вызывает исключение IOException, и любая попытка чтения не выполняется и исключает исключение NotSupportedException. не

Так if оператор больше не нужно, потому что FileMode.Append автоматически создает файл, если он не существует.

Комплексное решение будет, следовательно, будет:

using (FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write)) 
using (StreamWriter sw = new StreamWriter(aFile)) { 
    sw.WriteLine(Empcode); 
    sw.WriteLine(fname); 
    sw.WriteLine(lname); 
    sw.WriteLine(ph); 
    sw.WriteLine("**********************************************************************"); 
} 

Подсказка: использовать using, потому что он автоматически закрывает ресурсы, а также при возникновении исключения.

+0

У него есть это уже, не в том месте. :) – Chris

+0

Ahh Я вижу, не просмотрел весь код :) –

+0

Thx @Chris, я обновляю свой ответ. –

3

Вы должны поставить

if (!File.Exists(filePath)) 

вместо

if (File.Exists(filePath)) 
+0

if (! File.Exists (путь к файлу)) только в том случае, если файл не существует, тогда он создает файл. – swapnil

4

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

Изменить его:

if (!File.Exists(filePath)) 
+0

+1 для объяснения разницы вместо простого перечисления кода – RhysW

+0

правая его моя глупая ошибка спасибо – swapnil

1

Изменение File.Exists(filePath) к !File.Exists(filePath) Или даже лучше, всегда используйте режим Append. Он создаст файл, если он не существует.

0

Мне кажется, что утверждения if и else должны быть в обратном порядке, не так ли?

Теперь вы создаете файл, когда он существует, и добавляет его, когда он этого не делает. (Append также создает файл, если он еще не существует.)

Смежные вопросы