El archivo se debe-tener como un objeto unico en cada dispositivo informático y tambien en aplicaciones web se tiene mucho uso. En esta sección, vamos a aprender a manejar archivos en Go.
La mayor parte de las funciones de las operaciones de archivos estan en el package os
, he aquí algunas funciones sobre directorios:
-
func Mkdir(name string, perm FileMode) error
Crear directorio con
name
,perm
, 0777. -
func MkdirAll(path string, perm FileMode) error
Crear varios directorios de acuerdo al
path
, comoastaxie/test1/test2
. -
func Remove(name string) error
Remueve el directorio
name
, devuelve error si no es directorio o no está vacío. -
func RemoveAll(path string) error
Eliminar varios directorios de acuerdo
path
, no se borrará si camino es un camino único.
Codigo 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")
}
Dos funciones para crear los archivos:
-
func Create(name string) (file *File, err Error)
Crear un archivo con el
name
y devolver un objeto de archivo con el permiso 0666 de lectura y escritura -
func NewFile(fd uintptr, name string) *File
Crear un archivo y devolver un objeto de archivo.
Dos funciones para abrir archivos:
-
func Open(name string) (file *File, err Error)
Open file with
name
con el permiso de sólo lectura, y llama aOpenFile
con guion bajo. -
func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
Open file with
name
,flag
es el modo abierto como read-only, read-write,perm
es el permiso.
Funciones para la escritura de archivos:
-
func (file *File) Write(b []byte) (n int, err Error)
Escribe byte tipo de contenido en un archivo.
-
func (file *File) WriteAt(b []byte, off int64) (n int, err Error)
Escribe byte tipo de contenido a determinada posición de archivo.
-
func (file *File) WriteString(s string) (ret int, err Error)
Escribe cadena en el archivo.
Code sample:
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"))
}
}
Funciones para leer los archivos
-
func (file *File) Read(b []byte) (n int, err Error)
Lee datos de
b
. -
func (file *File) ReadAt(b []byte, off int64) (n int, err Error)
Lee datos en posicion
off
tob
.
Code sample:
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])
}
}
Go utiliza la misma función para eliminar archivos y directorios:
-
func Remove(name string) Error
Eliminar archivo o directorio con
name
.(name
termina con/
directorio )