2009-10-02 31 views
5

Tôi đang tạo tên tệp dựa trên các giá trị động như tên công ty và tên/họ.Tạo tên tệp hợp lệ trong Java

Tôi sau đó muốn xác minh rằng tên tệp hợp lệ trước khi thử tạo tệp. Đó là kiểm tra nó không chứa bất kỳ ký tự bất hợp pháp, và thay thế chúng nếu họ làm.

Tôi có thể tất nhiên chỉ sử dụng cụm từ thông dụng, nhưng đã tự hỏi liệu có phương pháp hiện tại nào đó như commons-lang hoặc commons-io thực hiện điều này không?

Trả lời

5

Với Java 7, phương pháp mới java.nio.file.Paths.get(String path) sẽ ném InvalidPathException nếu đường dẫn chứa ký tự không hợp lệ cho hệ thống tệp cụ thể, nhưng trong Java 6 hoặc cũ hơn, có tiếc là không có chức năng như vậy.

Vì các ký tự được cho phép và chiều dài của tên tệp là phụ thuộc nền tảng cao (hoặc thậm chí là hệ thống tệp), bạn có thể không có tùy chọn nào tốt hơn là cố gắng tạo tệp và xem tệp có bị lỗi hay không. Trong Java 6, việc tạo một FileOutputStream với một đường dẫn bất hợp pháp sẽ ném ra một FileNotFoundException khá không xác định.

3

Vâng, bạn nên xóa nó ngay cả khi nó tên tệp hợp pháp vì nó có thể chứa đường dẫn, trong trường hợp người dùng có thể cung cấp ../../../../../. ./../../etc/passwd, v.v.

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