2011-09-13 39 views
11

Tôi đang sử dụng nàyStreamWriter viết lại các tập tin hoặc thêm vào file

for($number=0; $number < 5; $number++){ 
StreamWriter x = new StreamWriter("C:\\test.txt"); 
       x.WriteLine(number); 
       x.Close(); 

} 

nếu có điều gì là trong test.text, mã này sẽ không ghi đè lên nó. Tôi có 2 câu hỏi

1: how can I make it overwrite the file 
2: how can I append to the same file 

sử dụng C#

Trả lời

15

Thử Enumerator chế độ File:

 FileStream fappend = File.Open("C:\\test.txt", FileMode.Append); // will append to end of file 

     FileStream fcreate = File.Open("C:\\test.txt", FileMode.Create); // will create the file or overwrite it if it already exists 
+3

Và sau đó bạn có thể tạo 'StreamWriter' từ' FileStream' thay vì trực tiếp từ tên tệp: 'StreamWriter x = new StreamWriter (fcreate);' –

4

Bạn có thể bắt đầu bằng cách sử dụng FileStream và sau đó đi qua đó để StreamWriter của bạn.

FileStream fsOverwrite = new FileStream("C:\\test.txt", FileMode.Create); 
StreamWriter swOverwrite = new StreamWriter(fsOverwrite); 

hoặc

FileStream fsAppend = new FileStream("C:\\test.txt", FileMode.Append);  
StreamWriter swAppend = new StreamWriter(fsAppend); 
+0

hoặc 'StreamWriter swAppend = new StreamWriter (FileStream mới ("C: \\ test.txt", FileMode.Append)); 'cho một lớp lót chỉ cần gọi' writer.Close(); 'để tuôn ra sau khi bạn viết –

13

hành vi StreamWriters mặc định là để tạo ra một tập tin mới, hoặc ghi đè lên nó nếu nó tồn tại. Để thêm vào tập tin bạn sẽ cần sử dụng quá tải chấp nhận một boolean và thiết lập đó là true. Trong mã ví dụ của bạn, bạn sẽ viết lại test.txt 5 lần.

using(var sw = new StreamWriter(@"c:\test.txt", true)) 
{ 
    for(int x = 0; x < 5; x++) 
    { 
     sw.WriteLine(x);  
    } 
} 
1

Vì vậy, kết quả của mã của bạn là gì?

Tôi mong đợi tệp không chứa gì ngoài số 4, vì hành vi mặc định là tạo/ghi đè, nhưng bạn đang nói rằng nó không ghi đè?

Bạn sẽ có thể ghi đè lên tệp bằng cách thực hiện những gì bạn đang làm và bạn có thể nối thêm bằng cách tạo một FileStream bằng FileMode.Append.

7

Bạn có thể vượt qua một tham số thứ hai để StreamWriter-enable hoặc disable phụ thêm vào tập tin:

trong C#.Net:

using System.IO; 

// This will enable appending to file. 
StreamWriter stream = new StreamWriter("YourFilePath", true); 

// This is default mode, not append to file and create a new file. 
StreamWriter stream = new StreamWriter("YourFilePath", false); 
// or 
StreamWriter stream = new StreamWriter("YourFilePath"); 

trong C++.Net(C++/CLI):

using namespace System::IO; 

// This will enable appending to file. 
StreamWriter^ stream = gcnew StreamWriter("YourFilePath", true); 

// This is default mode, not append to file and create a new file. 
StreamWriter^ stream = gcnew StreamWriter("YourFilePath", false); 
// or 
StreamWriter^ stream = gcnew StreamWriter("YourFilePath"); 
+0

Khi tôi sử dụng 'StreamWriter stream = new StreamWriter (" YourFilePath ");' trong C# nó nối thêm theo mặc định ... – EluciusFTW

Các vấn đề liên quan