2009-03-03 81 views
60

Tôi muốn cả đọc và ghi vào tệp. Điều này không hoạt động.Cách đọc và ghi tệp trong C#

static void Main(string[] args) 
{ 
    StreamReader sr = new StreamReader(@"C:\words.txt"); 
    StreamWriter sw = new StreamWriter(@"C:\words.txt"); 
} 

Làm cách nào để đọc và ghi vào tệp trong C#?

Trả lời

68

Bạn cần một luồng đơn, mở cho cả đọc và viết.

FileStream fileStream = new FileStream(
     @"c:\words.txt", FileMode.OpenOrCreate, 
     FileAccess.ReadWrite, FileShare.None); 
+10

FileShare.ReadWrite không cần thiết, và có khả năng không thể xác nhận, nó sẽ cho phép các ứng dụng khác đọc và ghi tệp của bạn trong khi bạn đang sử dụng. Nói chung FileShare.None được ưu tiên khi viết vào một tập tin, để ngăn chặn người khác truy cập vào một tập tin trong khi bạn làm việc trên nó. – ScottS

+0

@ScottS: Tôi đồng ý với điều kiện ReadWrite là cần thiết vì bạn có thể cho phép người xây dựng tìm ra chế độ chia sẻ. – Samuel

+2

Bỏ qua lần cuối ')' – user194743

30
var fs = File.Open("file.name", FileMode.OpenOrCreate, FileAccess.ReadWrite); 
var sw = new StreamWriter(fs); 
var sr = new StreamReader(fs); 

... 

fs.Close(); 
//or sw.Close(); 

Điều quan trọng là để mở tập tin với cờ FileAccess.ReadWrite. Sau đó bạn có thể tạo bất kỳ Stream/String/Binary Reader/Writers nào bạn cần bằng FileStream ban đầu.

60

Đừng quên con đường dễ dàng:

static void Main(string[] args) 
    { 
     var text = File.ReadAllText(@"C:\words.txt"); 
     File.WriteAllText(@"C:\words.txt", text + "DERP"); 
    } 
+13

@Copperpot: Kiểm tra các yêu cầu từ câu hỏi. Không nói gì về khóa. Ngoài ra, nó không nói bất cứ điều gì về tai nạn ổ đĩa cứng hoặc cuộc đình công sao băng cũng bị gián đoạn. – Will

+1

Tôi nghĩ câu hỏi ngụ ý 'cùng một lúc'. –

+3

@JohnAtwood Bạn biết họ nói gì về các giả định. Anh ấy không bao giờ chọn câu trả lời đúng, vì vậy chúng tôi sẽ không bao giờ * thực sự * biết. – Will

1

chủ đề này dường như để trả lời câu hỏi của bạn: simultaneous-read-write-a-file

Về cơ bản, những gì bạn cần là để khai báo hai FileStream, một cho các hoạt động đọc, khác cho các hoạt động viết. Writer Filestream cần mở tệp của bạn trong chế độ 'Nối'.

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