Временные файлы и директории

GolangGolangBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В программировании мы часто нуждаемся в создании данных, которые не нужны после завершения программы. Временные файлы и директории полезны для этой цели, так как они не загрязняют файловую систему с течением времени.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FileOperationsGroup(["File Operations"]) go/FileOperationsGroup -.-> go/temporary_files_and_directories("Temporary Files and Directories") subgraph Lab Skills go/temporary_files_and_directories -.-> lab-15517{{"Временные файлы и директории"}} end

Временные файлы и директории

В этом практическом занятии вам нужно создать временные файлы и директории на 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. Временные файлы и директории полезны для создания данных, которые не нужны после завершения программы, и не загрязняют файловую систему с течением времени.