2016-06-20 19 views
18

Tôi đang học golang (người mới bắt đầu) và tôi đã tìm kiếm trên cả google và stackoverflow nhưng tôi không thể tìm thấy câu trả lời vì vậy xin lỗi nếu đã được hỏi, nhưng làm thế nào tôi có thể mkdir nếu không tồn tại trong golang .mkdir nếu không tồn tại sử dụng golang

Ví dụ trong nút Tôi sẽ sử dụng fs-thêm với chức năng ensureDirSync (nếu chặn là không quan tâm tất nhiên)

fs.ensureDir("./public"); 

Trả lời

31

Tôi đã chạy theo hai cách:

  1. Kiểm tra sự tồn tại thư mục và tạo ra nó nếu nó không tồn tại:

    if _, err := os.Stat(path); os.IsNotExist(err) { 
        os.Mkdir(path, mode) 
    } 
    
  2. Cố gắng để tạo ra các thư mục và bỏ qua bất kỳ vấn đề:

    _ = os.Mkdir(path, mode) 
    
+1

Cảm ơn câu trả lời :). Điều đó cũng sẽ làm việc nhưng tôi nghĩ rằng câu trả lời của tôi dưới đây mà tôi cũng tìm thấy thông qua stackoverflow thậm chí còn đẹp hơn (nhưng không phải bởi nhiều)? – Alfred

+1

Tôi sẽ chấp nhận câu trả lời của bạn sau 3 phút – Alfred

37

Okay I figured it out nhờ này question/answer

import(
    "os" 
    "path/filepath" 
) 

newpath := filepath.Join(".", "public") 
os.MkdirAll(newpath, os.ModePerm) 
+2

Đây là câu trả lời hay nhất, và đang sử dụng stdlib. Điều này đặc biệt hữu ích khi được sử dụng cùng với os.Create, nơi bạn có thể cần phải tạo các thư mục con (sử dụng 'filepath.Dir (" path/to/file ")' trên đường dẫn đầy đủ đến tệp là một cách tiếp cận tốt đẹp trong – Paddie

+3

Bạn có thể muốn kiểm tra bất kỳ phản ứng lỗi nào trên cuộc gọi MkdirAll như: ' nếu err: = os.MkdirAll ("/somepath/", os.ModeDir); err! = nil { fmt.Println ("Không thể tạo thư mục ẩn.") } ' –

5

Bạn có thể sử dụng os.Stat để kiểm tra xem đường dẫn cụ thể tồn tại.
Nếu không, bạn có thể sử dụng os.Mkdir để tạo.

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