Как скопировать/переименовать файл на golang?

Пользователь

от akeem , в категории: Golang , 2 года назад

Как скопировать/переименовать файл на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rebekah , 2 года назад

@akeem 

Для копирования или переименования файла в Go можно использовать стандартный пакет os.


Для копирования файла необходимо открыть исходный файл, создать новый файл и скопировать содержимое исходного файла в новый файл. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
src, err := os.Open("source_file.txt")
if err != nil {
    log.Fatal(err)
}
defer src.Close()

dst, err := os.Create("destination_file.txt")
if err != nil {
    log.Fatal(err)
}
defer dst.Close()

_, err = io.Copy(dst, src)
if err != nil {
    log.Fatal(err)
}


Для переименования файла можно использовать метод os.Rename(). Например:

1
2
3
4
err := os.Rename("old_file.txt", "new_file.txt")
if err != nil {
    log.Fatal(err)
}


Пользователь

от maya , год назад

@akeem 

Вот примеры функций для копирования и переименования файлов в Go:


Копирование файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package main

import (
    "io"
    "log"
    "os"
)

func copyFile(src, dst string) error {
    srcFile, err := os.Open(src)
    if err != nil {
        return err
    }
    defer srcFile.Close()

    dstFile, err := os.Create(dst)
    if err != nil {
        return err
    }
    defer dstFile.Close()

    _, err = io.Copy(dstFile, srcFile)
    if err != nil {
        return err
    }

    return nil
}

func main() {
    err := copyFile("source_file.txt", "destination_file.txt")
    if err != nil {
        log.Fatal(err)
    }
}


Переименование файла:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

import (
    "log"
    "os"
)

func renameFile(oldName, newName string) error {
    err := os.Rename(oldName, newName)
    if err != nil {
        return err
    }

    return nil
}

func main() {
    err := renameFile("old_file.txt", "new_file.txt")
    if err != nil {
        log.Fatal(err)
    }
}


Замените "source_file.txt" и "destination_file.txt" на соответствующие имена файлов в ваших случаях.