2013-03-05 52 views
0

(Books類是在此代碼之外定義的。)所以當我嘗試從該文件讀取一本書時,我只得到這本書。每當我添加一個新的老版本時,它都會被寫下來。所以我無法將新書添加到我的myLibraryBooks列表中,因爲它會被自動覆蓋。當我嘗試寫入列表時,我的上一個文本被覆蓋

Books book = new Books(); 

Console.Write("Enter Author Name:"); 
book.Author = Console.ReadLine(); 

Console.Write("Enter Book Title:"); 
book.Title = Console.ReadLine(); 

Console.Write("Enter Book ISBN:"); 
book.ISBN = Console.ReadLine(); 

Console.Write("Enter the Publish Date:"); 
book.Publish_Date = Console.ReadLine(); 

myLibraryBooks.Add(new Books() { Author = book.Author.ToUpper(), Title = book.Title.ToUpper(), ISBN = book.ISBN, Publish_Date = book.Publish_Date.ToUpper() }); 
Console.WriteLine("Book added Successfully"); 
sw.Write(book.Author, FILE_PATH); 
sw.Write("\r\n", FILE_PATH); 
sw.Write(book.Title.ToUpper(), FILE_PATH); 
sw.Write("\r\n", FILE_PATH); 
sw.Write(book.ISBN.ToUpper(), FILE_PATH); 
sw.Write("\r\n", FILE_PATH); 
sw.Write(book.Publish_Date.ToUpper(), FILE_PATH); 
sw.Write("\r\n", FILE_PATH); 
sw.WriteLine(book.Author, FILE_PATH); 
sw.Close(); 
+0

你在哪裏看到這個代碼中的問題?你是說「foreach」只發生一次,你期望它多次? – 2013-03-05 20:25:03

+0

當我嘗試向我的文件添加一本書時,它會覆蓋當前在那裏的書。 – 2013-03-05 20:26:45

+0

你能顯示聲明和'sw'的開頭嗎?這裏缺少一些東西。 – Steve 2013-03-05 20:33:47

回答

3

我在這裏假設很多,但我想嘗試給出一個答案。

如果sw是一個StreamWriter(我不能看到聲明),那麼你應該

using(StreamWriter sw = new StreamWriter("yourFile", true)) 

打開它迫使StreamWriter的追加到當前的數據,而不是將其覆蓋

See MSDN StreamWriter constructors

還有sw.Write呼叫是錯誤的。您正在使用帶格式字符串的重載和要插入格式字符串的對象。相反,您只需編寫書籍的屬性即可。

您應該使用

sw.WriteLine(book.Author); 

有一個單獨的行每個屬性,而不是在一個行togheter貼。

+0

+1表示沒有OP發佈代碼,甚至沒有明確的問題。 -1到OP沒有閱讀文檔和提供錯誤的示例代碼.......... – 2013-03-05 20:29:47

+0

@Steve它是從這段代碼中聲明的。 – 2013-03-05 20:32:13

相關問題