Tôi đã thấy vô số ví dụ và hướng dẫn cho thấy cách tạo tệp và tất cả chúng đều "lừa" bằng cách chỉ cần đặt bit quyền của tệp. Tôi muốn biết/tìm hiểu làm thế nào để đúng cách os.FileMode để cung cấp cho một nhà văn trong quá trình tạo/cập nhật của một tập tin.Golang đúng cách khởi tạo os.FileMode
Một ví dụ thô này dưới đây:
func FileWrite(path string, r io.Reader, uid, gid int, perms string) (int64, error){
w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0664)
if err != nil {
if path == "" {
w = os.Stdout
} else {
return 0, err
}
}
defer w.Close()
size, err := io.Copy(w, r)
if err != nil {
return 0, err
}
return size, err
}
Trong các chức năng cơ bản trên bit quyền 0664 được thiết lập và mặc dù điều này có thể làm cho tinh thần đôi khi tôi muốn có một cách đúng đắn của thiết lập các chế độ File một cách chính xác. Như đã thấy ở trên một ví dụ phổ biến là UID/GID được biết đến và đã được cung cấp dưới dạng giá trị int và các perms là các chữ số bát phân đã được thu thập trước đó và chèn vào một db dưới dạng một chuỗi.
Cảm ơn Jim, luôn hữu ích! –
Trừ khi tôi bị nhầm lẫn nhiều, điều này không hữu ích nếu bạn đang cố gắng để có một số tập tin có thể ghi được và một số thì không. Có thể có hoặc trong (ví dụ) 0200 để bật người dùng có thể ghi, nhưng nó sẽ hỗ trợ khả năng đọc mã nếu có hằng số hệ điều hành để kiểm soát điều này. Vâng, tôi hy vọng mọi lập trình viên có giá trị muối của họ để biết sự cho phép octal unix nhưng nó vẫn là một chương trình xấu để sử dụng một giá trị phép thuật khi một tên mô tả có thể được sử dụng. Theo như tôi có thể nói các thư viện tiêu chuẩn đang thiếu điều này và chỉ mong đợi mọi người đã ghi nhớ các hằng số cho phép của tập tin Unix. –