2010-03-03 40 views

Trả lời

23

Không có.

File.Open là, trong nội bộ, không có gì hơn:

public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share) 
{ 
    return new FileStream(path, mode, access, share); 
} 

Nếu bạn không sử dụng quá tải mà chỉ định một FileAccess và FileShare, nó xác định điều này cho bạn (sử dụng FileShare.None, và FileAccess . Viết trên phụ thêm hoặc ReadWrite nếu không).

Điều đó đang được nói, đây là chi tiết triển khai, không phải là một phần của documentation. Về mặt kỹ thuật, bản phát hành .NET Framework tương lai có thể sử dụng triển khai khác, mặc dù tôi thấy điều đó là không thể.

5

File.Open() là một phương pháp tiện lợi. Bên trong nó được triển khai dưới dạng:

public static FileStream Open(string path, FileMode mode, FileAccess access, FileShare share) 
{ 
    return new FileStream(path, mode, access, share); 
} 
+0

... cùng với anh chị em của nó File.OpenRead và File.OpenText – Powerlord

16

Loại sao chép này rất hiếm trong khuôn khổ .NET. Nhưng có một câu chuyện về điều này, được kể bởi Krzysztof Cwalina trong this lecture. Họ đã làm một nghiên cứu khả năng sử dụng trên một phiên bản ban đầu của khuôn khổ, yêu cầu một loạt các lập trình viên có kinh nghiệm (nhưng nếu không .NET.) Để viết một số mã bằng cách sử dụng các lớp FileStream và StreadReader/Writer.

Nó không hoạt động tốt, chúng có tỷ lệ lỗi 100%. Họ trả lời bằng cách thêm các phương thức vào lớp System.IO.File, sử dụng phương pháp "có khả năng rơi vào hố thành công nhất".

btw video thú vị, nếu bạn hoàn toàn phù hợp với lý do khung làm việc trông như thế nào.

Gửi câu trả lời thực sự tốt hơn: phương thức File.Open() gọi hàm tạo FileStream, chuyển các giá trị cho FileAccess và FileShare (nếu bạn không chỉ định chúng) có nhiều khả năng thực hiện điều đúng. Đó là FileAccess.ReadWrite và FileShare.None.

+0

Bạn có thể cập nhật liên kết bài giảng không? – brumScouse

+0

Đã cập nhật. Hãy coi chừng đó là tệp .zip 500MB. –

+2

Liên kết bị hỏng một lần nữa – HeyJude

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