Чтение файла
read, _ := os.Open("./www/go/read.txt")
defer read.Close()
buffer := make([]byte, 1024)
n, _ := read.Read(buffer)
data := buffer[:n] // Прочитанные данные
fmt.Println(string(data))
Запись в файл
file, err := os.Create("./www/go/read.txt") // Создание или перезапись файла
if err != nil {
fmt.Println("Ошибка при создании файла:", err)
return
}
defer file.Close() // Закрытие файла в конце функции
data := []byte("Hello, World!") // Данные для записи
_, err = file.Write(data) // Запись данных в файл
if err != nil {
fmt.Println("Ошибка при записи в файл:", err)
return
}
fmt.Println("Данные успешно записаны в файл.")
Запись в конец файла
file, err := os.OpenFile("./www/go/log.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
fmt.Println(err)
}
defer file.Close()
file.WriteString("Должно быть так: Hello, World!\n")
if err != nil {
fmt.Println(err)
}
Стандартный поток ввода (stdin)
func main() {
buffer := make([]byte, 1024)
n, err := os.Stdin.Read(buffer)
if err != nil {
fmt.Println("Ошибка чтения из stdin:", err)
return
}
data := buffer[:n]
fmt.Println("Прочитанные данные:", string(data))
}
Стандартный поток вывода (stdout)
func main() {
message := "Привет, мир!"
_, err := os.Stdout.Write([]byte(message))
if err != nil {
fmt.Println("Ошибка записи в stdout:", err)
return
}
}
Стандартный поток ошибок (stderr)
func main() {
errMessage := "Ошибка: некорректные данные!"
_, err := os.Stderr.WriteString(errMessage)
if err != nil {
fmt.Println("Ошибка записи в stderr:", err)
return
}
}
Буферизованное чтение из файла
func main() {
file, err := os.Open("file.txt")
if err != nil {
fmt.Println("Ошибка при открытии файла:", err)
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
fmt.Println("Прочитанная строка:", line)
}
if err := scanner.Err(); err != nil {
fmt.Println("Ошибка при чтении файла:", err)
return
}
}
Буферизованная запись в файл:
func main() {
file, err := os.Create("file.txt")
if err != nil {
fmt.Println("Ошибка при создании файла:", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
data := []byte("Hello, World!")
_, err = writer.Write(data)
if err != nil {
fmt.Println("Ошибка при записи в файл:", err)
return
}
err = writer.Flush()
if err != nil {
fmt.Println("Ошибка при сбросе буфера:", err)
return
}
fmt.Println("Данные успешно записаны в файл.")
}
Чтение строки с клавиатуры:
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Введите текст: ")
text, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Ошибка чтения с клавиатуры:", err)
return
}
fmt.Println("Прочитанный текст:", text)
}
Чтение данных из файла CSV:
func main() {
file, err := os.Open("data.csv")
if err != nil {
fmt.Println("Ошибка при открытии файла:", err)
return
}
defer file.Close()
reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Ошибка при чтении файла CSV:", err)
return
}
for _, record := range records {
fmt.Println(record)
}
}
Запись данных в файл CSV:
func main() {
file, err := os.Create("data.csv")
if err != nil {
fmt.Println("Ошибка при создании файла:", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
data := [][]string{
{"Name", "Age", "City"},
{"John", "25", "New York"},
{"Alice", "30", "London"},
}
for _, record := range data {
err := writer.Write(record)
if err != nil {
fmt.Println("Ошибка при записи в файл CSV:", err)
return
}
}
fmt.Println("Данные успешно записаны в файл CSV.")
}
Создание архива ZIP
func main() {
zipFile, err := os.Create("archive.zip")
if err != nil {
fmt.Println("Ошибка при создании архива:", err)
return
}
defer zipFile.Close()
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
fileToArchive := "file.txt"
file, err := os.Open(fileToArchive)
if err != nil {
fmt.Println("Ошибка при открытии файла:", err)
return
}
defer file.Close()
zipEntry, err := zipWriter.Create(fileToArchive)
if err != nil {
fmt.Println("Ошибка при создании записи в архиве:", err)
return
}
_, err = io.Copy(zipEntry, file)
if err != nil {
fmt.Println("Ошибка при записи файла в архив:", err)
return
}
fmt.Println("Архив успешно создан.")
}
Извлечение файла из архива ZIP
func main() {
zipFile := "archive.zip"
extractDir := "extracted_files"
err := extractZip(zipFile, extractDir)
if err != nil {
fmt.Printf("Ошибка при разархивировании архива: %v\n", err)
return
}
fmt.Println("Архив успешно разархивирован.")
// Продолжайте выполнение остальных шагов...
}
func extractZip(zipFile, extractDir string) error {
zipReader, err := zip.OpenReader(zipFile)
if err != nil {
return err
}
defer zipReader.Close()
for _, file := range zipReader.File {
extractedFilePath := filepath.Join(extractDir, file.Name)
if file.FileInfo().IsDir() {
os.MkdirAll(extractedFilePath, file.Mode())
} else {
if err := os.MkdirAll(filepath.Dir(extractedFilePath), os.ModePerm); err != nil {
return err
}
extractedFile, err := file.Open()
if err != nil {
return err
}
defer extractedFile.Close()
outputFile, err := os.OpenFile(extractedFilePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, file.Mode())
if err != nil {
return err
}
defer outputFile.Close()
_, err = io.Copy(outputFile, extractedFile)
if err != nil {
return err
}
}
}
return nil
}