Введение
В программировании мы часто нуждаемся в создании данных, которые не нужны после завершения программы. Временные файлы и директории полезны для этой цели, так как они не загрязняют файловую систему с течением времени.
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В программировании мы часто нуждаемся в создании данных, которые не нужны после завершения программы. Временные файлы и директории полезны для этой цели, так как они не загрязняют файловую систему с течением времени.
В этом практическом занятии вам нужно создать временные файлы и директории на Go.
os.CreateTemp
для создания временного файла.os.MkdirTemp
для создания временной директории.os.RemoveAll
для удаления временной директории.os.WriteFile
для записи данных в файл.$ go run temporary-files-and-directories.go
Имя временного файла: /tmp/sample610887201
Имя временной директории: /tmp/sampledir898854668
Ниже представлен полный код:
// Во время выполнения программы мы часто хотим создать
// данные, которые не нужны после завершения программы.
// *Временные файлы и директории* полезны для этой
// цели, так как они не загрязняют файловую систему с течением времени.
package main
import (
"fmt"
"os"
"path/filepath"
)
func check(e error) {
if e!= nil {
panic(e)
}
}
func main() {
// Самый простой способ создать временный файл - это
// вызвать `os.CreateTemp`. Он создает файл *и*
// открывает его для чтения и записи. Мы передаем `""`
// в качестве первого аргумента, поэтому `os.CreateTemp`
// создаст файл в стандартном месте для нашей ОС.
f, err := os.CreateTemp("", "sample")
check(err)
// Отобразите имя временного файла. На ОС на базе Unix
// директория будет, вероятно, `/tmp`. Имя файла
// начинается с префикса, заданного вторым аргументом
// для `os.CreateTemp`, а остальное выбирается
// автоматически, чтобы гарантировать, что параллельные
// вызовы всегда создавали разные имена файлов.
fmt.Println("Имя временного файла:", f.Name())
// Удалите файл после завершения работы. ОС, вероятно,
// сама удалит временные файлы через некоторое время,
// но явно это делать - хороший тон.
defer os.Remove(f.Name())
// Мы можем записать некоторые данные в файл.
_, err = f.Write([]byte{1, 2, 3, 4})
check(err)
// Если мы собираемся создавать много временных файлов,
// мы, возможно, предпочтем создать временную *директорию*.
// Аргументы `os.MkdirTemp` такие же, как и у
// `CreateTemp`, но он возвращает имя директории, а не
// открытый файл.
dname, err := os.MkdirTemp("", "sampledir")
check(err)
fmt.Println("Имя временной директории:", dname)
defer os.RemoveAll(dname)
// Теперь мы можем составлять имена временных файлов,
// добавляя к ним префикс с именем нашей временной директории.
fname := filepath.Join(dname, "file1")
err = os.WriteFile(fname, []byte{1, 2}, 0666)
check(err)
}
В этом практическом занятии вы узнали, как создавать временные файлы и директории на Go с использованием os.CreateTemp
, os.MkdirTemp
, os.RemoveAll
и os.WriteFile
. Временные файлы и директории полезны для создания данных, которые не нужны после завершения программы, и не загрязняют файловую систему с течением времени.