2012-05-14 20 views
7

Trong java, tôi cần phải viết một chuỗi vào một tệp mới, như 'c: \ test \ upload \ myfile.txt', nếu thư mục 'tải lên' không tồn tại, nó sẽ tự động tạo ra nó. làm thế nào để làm nó ? Apache Commons IO có API này?Làm cách nào để tự động tạo một thư mục bị thiếu?

+0

có thể trùng lặp của [Phương pháp trong Java để tạo tệp tại một vị trí, tạo thư mục nếu cần?] (Http://stackoverflow.com/questions/1752518/method-in-java-to-create-a-file -at-a-location-creating-directories-if-needed) – skaffman

Trả lời

11
File file = new File(...); 
file.mkdirs(); //for several levels, without the "s" for one level 
FileWriter fileWriter = new FileWriter(file); 
fileWriter.write("..."); 

Tạo thư mục được đặt tên bởi tên đường dẫn trừu tượng này, bao gồm bất kỳ thư mục mẹ cần thiết nhưng không tồn tại. Lưu ý rằng nếu thao tác này thất bại, nó có thể đã thành công trong việc tạo một số thư mục cha cần thiết.

Trả về: đúng nếu và chỉ khi thư mục được tạo cùng với tất cả các thư mục mẹ cần thiết; false

Xem File.mkdirs()File.mkdir()

+0

Điều đó không thực sự trả lời câu hỏi. – skaffman

+0

Viết thực tế cho tệp không có trong câu trả lời bạn muốn nói? Tôi cho rằng đó không phải là vấn đề khi xem xét tiêu đề của câu hỏi. Cập nhật: thêm tệp ghi vào ví dụ. –

3
new File(fileToSave.getParent()).mkdirs(); 

Nó trả về một boolean để kiểm tra xem việc lập thành công (sẽ thất bại nếu đĩa đầy hoặc nếu tập tin tồn tại với tên 'upload', vv)

3

trong Ngoài để câu trả lời được chấp nhận, kể từ khi câu hỏi cũng đề cập đến các thư viện Apache Common IO, tôi báo cáo trong một giải pháp sau đây bằng cách sử dụng thi s thoải mái thư viện:

File file = new File("... the directory path ..."); 
FileUtils.forceMkdir(file); 

Giải pháp này sử dụng lớp FileUtils, từ gói org.apache.commons.io và phương pháp forceMkdir, rằng "Làm cho một thư mục, bao gồm bất kỳ thư mục mẹ cần thiết nhưng không tồn tại".

+1

Giải pháp này sẽ buộc bạn bắt ngoại lệ ('IOException' nếu bạn vượt qua một tệp hiện có). – naXa

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