2009-03-09 45 views
19

Nhiều khi chúng tôi gặp lỗi, trong khi cố gắng ghi tệp trên nền tảng Windows,Tệp được sử dụng bởi một quy trình khác

"Quá trình này không thể truy cập tệp 'XXX' do quá trình này đang được sử dụng."

Làm thế nào để đăng ký C#, trước khi ghi vào tập tin không được sử dụng bởi quy trình khác?

Trả lời

13

Bạn có thể không, về cơ bản - bạn phải cố gắng để mở tập tin để viết, và nếu bạn nhận được một ngoại lệ bạn không thể viết thư cho nó :(

Ngay cả khi bạn có thể thực hiện kiểm tra riêng trước, kết quả sẽ lỗi thời trước khi bạn có thể bắt đầu viết - bạn vẫn có thể kết thúc với ngoại lệ sau.

Sẽ thật tuyệt nếu khung được cung cấp phương thức TryOpen, thừa nhận rằng ...

+0

+1 Tôi sử dụng nó trong các lô hàng đêm của tôi và nó hoạt động, không tao nhã, nhưng hoạt động. – systempuntoout

1

Thử đặt lệnh mở trong câu lệnh cố gắng nắm bắt. Nếu tập tin đang được sử dụng IOException sẽ được ném.

2

Bạn chỉ cần thử mở bằng quyền truy cập chia sẻ mà bạn muốn và xử lý lỗi được ném.

Lưu ý: Đôi khi tệp sẽ không mở đơn giản vì quyền chia sẻ tệp bạn đã chỉ định mâu thuẫn với quyền chia sẻ tệp mà ai đó đã mở tệp.

Please see my answer here for more information.

0

Cố gắng Đổi tên tệp nếu bạn có thể đổi tên, sau đó xác nhận rằng không có quy trình nào khác đang truy cập tệp đó. Cuối cùng, hãy chắc chắn rằng bạn đã đổi tên cùng một tệp trong cùng một thư mục.

6

Bạn phải để close tập tin của bạn sau khi sử dụng nó trên mã của bạn:

FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened 
//you use the file here 
file.Close(); //then you must to close the file 
+1

Giải quyết được sự cố của tôi. Quên để đóng nó lại. Đặt trên tiêu đề của một 'sử dụng (...) {...}' và tốt để đi – Jcorretjer

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