Tôi đã thực hiện một chương trình Java trong Eclipse. Tôi đã bắt đầu trên Windows XP, nhưng gần đây đã được nâng cấp.Tại sao chương trình của tôi không thể xóa các tệp mà nó tạo ra trong Win7?
Là một phần của cơ chế tiết kiệm, chương trình ghi cài đặt vào tệp settings_new.sav
. Nếu điều đó ổn, nó sẽ xóa settings.sav
và đổi tên tên mới để khớp với tên cũ. Trong khi nó làm việc theo winXP (ít nhất là tôi nghĩ nó đã làm, nhưng tôi không thể kiểm tra bây giờ), theo win7, nó không xóa các tập tin, mặc dù nó là chương trình tạo ra nó (mặc dù, một ví dụ khác của chương trình).
Tệp được chọn bởi Eclipse và có thể bị xóa khỏi đó một cách khá vui vẻ. Tôi có thể xóa nó bằng tay. Tôi là quản trị viên trên máy tính của riêng tôi. Thư mục nằm ngay bên trong thư mục không gian làm việc và không nằm trong Program Files (tuy nhiên, tôi không biết liệu người dùng cuối cùng sẽ cài đặt nó ở đó). Chương trình có thể tạo và sửa đổi các tập tin tốt. Nó không ném bất kỳ ngoại lệ nào, mà tôi nghĩ nó sẽ xảy ra nếu nó là win7 chặn nó.
Bất kỳ ý tưởng nào?
Nó thực sự là cơ chế khóa tệp trong Windows. Mã tương tự có thể hoạt động tốt trong Linux. Nhưng tôi đồng ý, bạn nên đóng quyền truy cập một cách rõ ràng vào tệp để làm cho tệp hoạt động bình thường ở mọi nơi. –
@MarkRobinson: Thú vị, tôi nên kiểm tra các ứng dụng swing của tôi trong linux too.It dường như các nhà phát triển nên dự đoán các vấn đề ở cấp hệ điều hành hơn là trên JVM. – PraveenMax
Windows và Linux có các ngữ nghĩa khóa tập tin khác nhau. Linux sẽ cho phép bạn xóa một tệp bạn đã mở để chỉnh sửa mà không cần phải thổi lên. Sau đó, bạn có thể tạo tệp mới có cùng tên mà không gặp sự cố. Trong Windows, nó có thể ngăn bạn xóa một tập tin nếu nó được mở trong một tiến trình khác. Các tình huống cụ thể này xảy ra phụ thuộc rất lớn vào cách nó được mở (theo phương thức/và kiểu truy cập). Nếu bạn có thêm câu hỏi, tôi đề nghị bạn đăng một câu hỏi SO mới nhằm vào các nhân viên Windows :) –