2012-10-05 37 views
53

Tôi đang sử dụng groovy để tạo một tệp như "../A/B/file.txt". Để thực hiện việc này, tôi đã tạo một số service và chuyển số file path thành một argument. Dịch vụ này sau đó được sử dụng bởi Job. Job sẽ thực hiện logic trong việc tạo tệp trong thư mục được chỉ định. Tôi đã tạo thư mục "A" theo cách thủ công.Cách kiểm tra xem thư mục chứa tệp có tồn tại không?

Làm cách nào để tạo thư mục "B" và tệp.txt bên trong thư mục "A" qua mã để tạo tự động?

Tôi cũng cần kiểm tra xem các thư mục "B" và "A" có tồn tại trước khi tạo tệp hay không.

Trả lời

101

Để kiểm tra xem một thư mục tồn tại hay không, bạn chỉ có thể sử dụng phương pháp exists():

// Create a File object representing the folder 'A/B' 
def folder = new File('A/B') 

// If it doesn't exist 
if(!folder.exists()) { 
    // Create all folders up-to and including B 
    folder.mkdirs() 
} 

// Then, write to file.txt inside B 
new File(folder, 'file.txt').withWriterAppend { w -> 
    w << "Some text\n" 
} 
8

EDIT: như của Java8 bạn muốn sử dụng tốt hơn Files lớp:

Path resultingPath = Files.createDirectories('A/B'); 

Tôi không biết nếu điều này cuối cùng sửa chữa vấn đề của bạn, nhưng lớp File có phương pháp mkdirs() mà hoàn toàn tạo ra con đường xác định bởi các tập tin .

File f = new File("/A/B/"); 
f.mkdirs(); 
+1

Cảm ơn. Nhưng làm thế nào tôi sẽ tạo file.txt cùng một lúc với việc tạo ra các thư mục? – chemilleX3

+0

là f.mkdrs() này không phải f.mkdir()? cảm ơn .. – chemilleX3

+0

Tôi hiểu bây giờ, nó phải là f.mkdrs() kể từ khi tôi tạo nhiều thư mục. Cảm ơn. – chemilleX3

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