Sự khác biệt là gì, nếu có?Sự khác biệt giữa 'File.Open()' và 'new FIleStream()'
Trả lời
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ể.
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);
}
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.
Bạn có thể cập nhật liên kết bài giảng không? – brumScouse
Đã cập nhật. Hãy coi chừng đó là tệp .zip 500MB. –
Liên kết bị hỏng một lần nữa – HeyJude
- 1. Sự khác biệt giữa "new A()" và "A.newInstance()" là gì?
- 2. Trong Javascript, sự khác biệt giữa 'Object.create' và 'new'
- 3. Sự khác nhau giữa MyClass.prototype = new Object() và MyClass.prototype = Object
- 4. C#: Sự khác nhau giữa '+ = anEvent' và '+ = new EventHandler (anEvent)'
- 5. Sự khác nhau giữa Shadows (VB.NET) và New (C#)
- 6. Assign và tạo new String khác biệt
- 7. Sự khác biệt giữa $ (...) và `...`
- 8. Sự khác biệt giữa. và #
- 9. Sự khác biệt giữa $ * và $ @
- 10. Sự khác biệt giữa ". +" Và ". +?"
- 11. Sự khác biệt giữa "**/* /" và "** /"?
- 12. Sự khác biệt giữa = và: =
- 13. C#: sự khác biệt giữa SomeEvent + = Phương pháp và SomeEvent + = new Đại biểu (Method)
- 14. Sự khác biệt giữa Executors.newSingleThreadExecutor(). Execute (command) và new Thread (command) .start();
- 15. LINQ - Sự khác biệt giữa .Select (n => n.Name) và .Select (n => new {n.Name});
- 16. sự khác biệt giữa PrintWriter và OutputStream
- 17. Sự khác biệt giữa RoutedEventHandler và EventHandler
- 18. Sự khác biệt giữa SAXParser và XMLReader
- 19. Sự khác biệt giữa SwingWorker và Executor
- 20. Sự khác biệt giữa HttpCookie và Cookie?
- 21. Sự khác biệt giữa String.isEmpty() và String.equals ("")
- 22. Sự khác biệt giữa Intent.ACTION_GET_CONTENT và Intent.ACTION_PICK
- 23. sự khác biệt giữa HttpResponseMessage và HttpResponseException
- 24. Sự khác biệt giữa @GeneratedValue và @GenericGenerator
- 25. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 26. Sự khác biệt giữa mảng byte và MemoryStream
- 27. Sự khác biệt giữa StreamWriter/Reader và StringWriter/Readerll
- 28. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 29. Sự khác biệt giữa Html.RenderAction và Html.Action
- 30. Sự khác biệt giữa cookie và phiên?
... cùng với anh chị em của nó File.OpenRead và File.OpenText – Powerlord