Skip to content

Latest commit

 

History

History
144 lines (109 loc) · 3.48 KB

File metadata and controls

144 lines (109 loc) · 3.48 KB

7.5 Archivos

Los archivos son objetos esenciales en cada computador. No es una sorpresa que las aplicaciones web también hagan un uso de ellos. En esta sección vamos a aprender cómo operar archivos en Go.

Directorios

En Go, la mayoría de las operaciones de archivos están localizadas en el paquete os. Aquí hay algunas de las funciones:

  • func Mkdir(name string, perm FileMode) error Crea un directorio name y los permisos perm, ejemplo: 0777.

  • func MkdirAll(path string, perm FileMode) error Crea múltiples directorios de acuerdo al path, como astaxie/test1/test2.

  • func Remove(name string) error Elimina el directorio name. Retorna un error si no hay directorio o no está vacío.

  • func RemoveAll(path string) error Elimina múltiples directorios de acuerdo al path. Los directorios no serán eliminados si path es una ruta simple.

Código de ejemplo:

	package main

	import (
		"fmt"
		"os"
	)

	func main() {
		os.Mkdir("astaxie", 0777)
		os.MkdirAll("astaxie/test1/test2", 0777)
		err := os.Remove("astaxie")
		if err != nil {
			fmt.Println(err)
		}
		os.RemoveAll("astaxie")
	}

Archivos

Crear y abrir archivos

Existen dos funciones para crear archivos:

  • func Create(name string) (file *File, err Error) Crea un archivo name y retorna un objeto de lectura escritura con los permisos 0666.

  • func NewFile(fd uintptr, name string) *File Crea un archivo y retorna un retorna un objeto archivo.

También hay dos funciones para abrir archivos:

  • func Open(name string) (file *File, err Error) Abre un archivo name con permisos de solo lectura, llamando a OpenFile por debajo.

  • func OpenFile(name string, flag int, perm uint32) (file *File, err Error) Abre un archivo name. flag es el modo de abertura, como solo lectura, lectura-escritura, etc. perm son los permisos del archivo.

Escribir archivos

Funciones para escribir archivos:

  • func (file *File) Write(b []byte) (n int, err Error) Escribr contenido binario a un archivo.

  • func (file *File) WriteAt(b []byte, off int64) (n int, err Error) Escribe un archivo binario en una posición específica del archivo.

  • func (file *File) WriteString(s string) (ret int, err Error) Escribe una cadena en un archivo.

Código de ejemplo:

	package main

	import (
		"fmt"
		"os"
	)

	func main() {
		userFile := "astaxie.txt"
		fout, err := os.Create(userFile)		
		if err != nil {
			fmt.Println(userFile, err)
			return
		}
		defer fout.Close()
		for i := 0; i < 10; i++ {
			fout.WriteString("Just a test!\r\n")
			fout.Write([]byte("Just a test!\r\n"))
		}
	}

Read files

Funciones para leer archivos:

  • func (file *File) Read(b []byte) (n int, err Error) Lee la información a b

  • func (file *File) ReadAt(b []byte, off int64) (n int, err Error) Lee l ainformación de off a b

Código de ejemplo:

	package main

	import (
		"fmt"
		"os"
	)

	func main() {
		userFile := "asatxie.txt"
		fl, err := os.Open(userFile)		
		if err != nil {
			fmt.Println(userFile, err)
			return
		}
		defer fl.Close()
		buf := make([]byte, 1024)
		for {
			n, _ := fl.Read(buf)
			if 0 == n {
				break
			}
			os.Stdout.Write(buf[:n])
		}
	}

Eliminar archivos

Go usa la misma función para eliminar archivos y directorios:

  • func Remove(name string) Error Elimina un archivo o directorio name (si termina en / significa que es un directorio)

Enlaces