2013-10-20 4 views
-1

Я не уверен, что я здесь делаю неправильно. Он компилируется и запускается и действует нормально, но он не записывает строку в текстовый файл. У меня есть FileStream и читайте на MSDN, чтобы попытаться понять это самостоятельно. Когда я получил что-то для работы, он переписал весь файл тем, что я в него вложил. Поэтому я надеюсь, что программист, который сделал это более 4 месяцев (например, я), может объяснить. Вот фрагмент моего кода, который, по моему мнению, имеет значение.Запись в отсортированный текстовый файл

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ConsoleApplication33 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     FileStream FireBall = new FileStream("Students.txt", FileMode.Open, FileAccess.Read); 
     StreamReader inFile = new StreamReader(FireBall); 
     string inValue; 
     string[] values; 
     double GPA; 
     double total = 0; 
     double counter = 0; 
     double count = 0; 
     double counti = 0; 
     double counterr = 0; 
     List<string> Anderson = new List<string>(); //Anderson 
     List<string> gpa = new List<string>(); //GPA 
     List<string> noemail = new List<string>(); // email 
     List<string> lines = new List<string>(); 


     string newLastName = "'Constant"; 
     string newRecord = "(LIST (LIST 'Constant 'Malachi 'D) '1234567890 '[email protected] 4.000000)"; 
     string line; 
     string lastName; 
     bool insertionPointFound = false; 

     for (int i = 0; i < lines.Count && !insertionPointFound; i++) 
     { 

      line = lines[i]; 
      if (line.StartsWith("(LIST (LIST ")) 
      { 
       values = line.Split(" ".ToCharArray()); 
       lastName = values[2]; 
       if (newLastName.CompareTo(lastName) < 0) 
       { 
        lines.Insert(i, newRecord); 
        insertionPointFound = true; 
       } 
      } 
     } 
     if (!insertionPointFound) 
     { 

      lines.Add(newRecord); 
     } 
+1

-1: Я не совсем уверен, что вы читаете на MSDN, но вы не пропустили никаких следов записи в файл. Пожалуйста, проверьте результаты следующего поиска [msdn C# write to file] (http://www.bing.com/search?q=msdn+c%23+write+to+file), особенно [How to: Write to a Текстовый файл (C#)] (http://msdn.microsoft.com/en-us/library/vstudio/8bh11f1k.aspx). Также попробуйте сделать ваш образец более компактным (ознакомьтесь с http://www.sscce.org для руководства). –

ответ

2

Вы не пишете здесь. Обратите внимание, что вы используете FileAccess.Read в

FileStream FireBall = new FileStream("Students.txt", FileMode.Open, FileAccess.Read); 

Он должен быть заменен FileAccess.ReadWrite

Вы можете использовать StreamWrite для записи в файл. И вы можете легко читать и писать с помощью File.ReadAllText и File.WriteAllText

+0

FileStream FireBall = новый FileStream ("Students.txt", FileMode.Open, FileAccess.ReadWrite); Все еще ничего не делает? – Zoro

+1

Взгляните на этот вопрос: http://stackoverflow.com/questions/605685/how-to-both-read-write-file-in-c-sharp – Jerry

2

То, что я не вижу, - это любой код, который записывает сам файл. Если вы читаете содержимое файла в linesList, запись в этот список не совпадает с записью в фактический файл.

Так что вам нужно явно написать файл, с чем-то вроде StreamWriter. См. Здесь: http://msdn.microsoft.com/en-us/library/6ka1wd3w.aspx

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