Ich habe unzählige Beispiele und Tutorials gesehen, die zeigen, wie man eine Datei erstellt und alle "schummelt", indem man einfach die Berechtigungsbits der Datei setzt. Ich möchte wissen/herausfinden, wie man os.FileMode richtig instantiiert, um es einem Schreiber während der Erstellung/Aktualisierung einer Datei zur Verfügung zu stellen.Golang richtig instantiieren os.FileMode
Ein krasses Beispiel ist dies unter:
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
}
In der Grundfunktion über Berechtigungs-Bits 0664 gesetzt, und obwohl dies Sinn machen kann manchmal ziehe ich den Dateimodus Einstellung richtig eine richtige Art und Weise zu haben. Wie oben zu sehen, wäre ein typisches Beispiel, dass die UID/GID bekannt ist und bereits als int-Werte und die Dauerwellen als oktale Ziffern bereitgestellt werden, die zuvor gesammelt und als String in eine db eingefügt wurden.
Danke Jim, immer hilfsbereit! –
Sofern ich mich nicht sehr irre, ist dies nicht hilfreich, wenn Sie versuchen, einige Dateien zu haben, die schreibbar sind und andere nicht. Man kann oder in (zum Beispiel) 0200 den Benutzer schreibbar einschalten, aber es würde die Lesbarkeit des Codes erleichtern, wenn es eine os-Konstante gäbe, um dies zu kontrollieren. Ja Ich erwarte, dass jeder Programmierer es wert ist, oktale Unix-Berechtigungen zu kennen, aber es ist immer noch schlecht, einen magischen Wert zu programmieren, wenn ein beschreibender Name verwendet werden kann. Soweit ich sagen kann die Standard-Bibliotheken dies vermissen und nur erwarten, dass jeder sich Unix-Datei Erlaubnis Konstanten merken. –