Nếu tôi đang cố xóa tệp nhưng đồng thời một quá trình khác đang thực hiện Tệp.Exists (...) trên cùng một tệp, điều đó có khả năng khóa tệp và khiến quá trình của tôi không thành công?Sẽ gọi một File.Exist đặt một khóa trên một tập tin?
Trả lời
Không, tệp.Exist() chỉ kiểm tra xem tệp được đề cập có nằm trong hệ thống tệp tại đường dẫn đã chỉ định hay không. Tuy nhiên, nó không truy cập dữ liệu tệp hoặc tiêu đề, do đó, nó sẽ không đặt khóa trên tệp.
Một lưu ý phụ, thậm chí việc mở tệp sẽ không nhất thiết phải khóa tệp đó. Nó phụ thuộc vào các thông số truy cập bạn chọn khi mở.
Không, tệp.Exist không khóa tệp. Tuy nhiên, một cách tuyệt vời để xem điều gì đang xảy ra dưới trang bìa là xem qua số source code.
Kéo xuống mã nguồn cho thư viện lớp cơ sở .Net Framework và xem xét những gì đang diễn ra đằng sau hậu trường. Đặc biệt, lớp System.IO.File có một số lựa chọn mặc định rất thú vị để xử lý tệp, khóa, giải phóng, v.v. Trong các trường hợp như của bạn, hãy xem nguồn gốc của những gì đang diễn ra đằng sau hậu trường có thể tạo nên sự khác biệt về cách bạn thiết kế ứng dụng của mình.
Mỗi liên kết:
Tôi có thể làm gì với CLI nguồn được chia sẻ? Có rất nhiều công nghệ ngôn ngữ lập trình trong CLI nguồn được chia sẻ. Đó có thể là sự quan tâm đối với nhiều đối tượng, bao gồm:
- Nhà phát triển quan tâm đến hoạt động bên trong của .NET Framework có thể khám phá việc thực hiện CLI này để xem cách thu thập rác, biên dịch và xác minh JIT là xử lý, thực hiện các giao thức bảo mật và tổ chức các khung công tác và các hệ thống đối tượng ảo.
- Giáo viên và nhà nghiên cứu đang làm việc với công nghệ trình biên dịch nâng cao. Các dự án nghiên cứu thành các phần mở rộng ngôn ngữ, tối ưu hóa JIT và bộ sưu tập rác hiện đại đều có cơ sở trong CLI nguồn được chia sẻ. Các khóa học trình biên dịch hiện đại có thể dựa trên ngôn ngữ C# hoặc JScript được triển khai trên CLI.
- Những người phát triển triển khai CLI của riêng họ sẽ tìm thấy CLI nguồn được chia sẻ là hướng dẫn và phụ trợ không thể thiếu đối với các tiêu chuẩn ECMA.
Đây là câu trả lời cho anu - và bất kỳ ai cũng làm điều gì đó tương tự với tệp.
Điều quan trọng là truy cập tệp bằng tuyên bố sử dụng. Điều này đảm bảo bạn xử lý một cách thích hợp tham chiếu đến tệp.
using (var fs = File.OpenRead(path)) {
// Do something
}