2011-09-22 37 views
10

Nếu tôi gọi một trong các phương pháp File.mkdir() hoặc File.mkdirs() bằng Java và trả về false, có cách nào để biết tại sao thư mục không được tạo?Khám phá lý do cho lỗi File.mkdirs()

+2

Tôi đã luôn luôn tự hỏi tại sao 'mkdir()' được thiết kế theo cách nó đã làm (không phải là nó từng là một vấn đề đối với tôi). – NPE

+1

Tương tự với 'delete()', chỉ trả về một boolean. Không có dấu hiệu nào về lý do tại sao một cái gì đó thất bại nếu nó không phải là một 'SecurityException'. –

Trả lời

4

Không thực sự, không. Nếu SecurityException KHÔNG được ném, thì nguyên nhân có khả năng nhất là lỗi đánh máy trong đường dẫn, có nghĩa là bạn đã vô tình chỉ định đường dẫn cha mẹ cho các thư mục mới bằng cách nào đó không hợp lệ.

Tôi không cho rằng bạn đã gói nó trong một khối try { ... } catch (Exception e), nơi bạn không nhận ra số SecurityException đang bị ném, bởi vì bạn đang tìm kiếm tổ tiên của SecurityException, phải không?

Nếu bạn có niềm tin cao rằng mọi thứ có vẻ đúng, và nó vẫn không thành công, tôi cho rằng bạn có thể chỉ cần đặt nó trong một vòng lặp để thử lại, nói, ba lần. Nếu nó vẫn không thành công, và tùy thuộc vào ứng dụng của bạn, bạn có thể tăng một số loại cảnh báo ở cấp độ giao diện người dùng, hoặc đăng nhập lỗi trong tệp nhật ký (giả sử bạn có thể ghi vào nó).

Tôi cho rằng có thể một số vấn đề I/O sâu hơn ngăn không cho nó hoạt động, nhưng ngoài việc thông báo cho người dùng về sự thất bại, bạn không thể thực hiện được ở mức ứng dụng. Nếu có cái gì đó sâu hơn trong I/O sai, đó là nhiều khả năng một vấn đề với hệ thống/phần cứng/hệ điều hành, hoặc một cái gì đó hoàn toàn chiến thắng mà bạn không kiểm soát như một hệ thống con/vụ tai nạn.

... và nếu điều đó xảy ra, đó là trách nhiệm của anh chàng CNTT cần sửa, chứ không phải ứng dụng của bạn. Trừ khi tất nhiên ứng dụng của bạn bằng cách nào đó gây ra sự cố.

+2

Không, đó không phải là trường hợp. Tôi phát hiện ra vấn đề (thư mục cha có một chủ sở hữu sai trong một nút của một cụm) nhưng nó yêu cầu tôi đi đến tầng khác, nói chuyện với quản trị viên mạng, yêu cầu ai đó cho tôi một phiên ssh và cuối cùng, gõ ' mkdir my/faulty/path'. Tôi hy vọng một cách thực tế hơn để làm điều đó ... – brandizzi

+0

Cũng có bạn đi - vấn đề anh chàng CNTT. :) – jefflunt

+1

Haha, chắc chắn :) nhưng Java không hữu ích ... – brandizzi

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