Если вы хотите написать облачную функцию и вам нужно записать временные данные в файловую систему, как вы это сделаете?
Использование /tmp
. Под капотом это на самом деле просто сохранение в памяти, но если вы должны имитировать чтение и запись в файловую систему, это сработает.
Я программно клонировал репозиторий и анализировал файлы JSON из этого репо, поэтому в моей ситуации это имело смысл.
Написать:
func write() error { text := "Hello World" filepath := "/tmp/file" fmt.Printf("writing file %v\n", filepath) b := []byte(text) err := ioutil.WriteFile(filepath, b, 0644) switch { case err != nil: fmt.Printf("error encountered writing file %v, %v\n", filepath, err) return err default: fmt.Printf("file wrote successfully\n") return nil } }
Читать:
func read() (string, error) { filepath := "tmp/file" fmt.Printf("reading file %v\n", filepath) content, err := ioutil.ReadFile(filepath) switch { case err != nil: fmt.Printf("error encountered reading file %v, %v\n", filepath, err) return "", err default: fmt.Printf("file %v read, content: %v\n", filepath, string(content)) return string(content), nil } }
Полный образец вы можете найти здесь.
Если вы заботитесь о сохранении файлов, которые вы пишете, не используйте это решение. Вместо этого используйте что-то вот так.
Первоначально опубликовано на https://www.zakmiller.com 9 мая 2019 г.