Метод os.File.Read
Метод os.File.Read читает данные из файла в байтовый слайс.
В первый параметр он принимает байтовый слайс, в который будут
записаны прочитанные данные. Метод возвращает количество
фактически прочитанных байт и ошибку. Чтение происходит до
заполнения слайса или до достижения конца файла.
Синтаксис
func (f *File) Read(b []byte) (n int, err error)
Пример
Давайте прочитаем содержимое файла в байтовый слайс размером 100 байт:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
buffer := make([]byte, 100)
n, err := file.Read(buffer)
if err != nil {
fmt.Println("Error reading file:", err)
return
}
fmt.Printf("Read %d bytes: %s\n", n, string(buffer[:n]))
}
Результат выполнения кода:
"Read 27 bytes: Hello, this is test file."
Пример
Давайте прочитаем файл по частям в цикле, пока не достигнем его конца:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
buffer := make([]byte, 16)
totalBytes := 0
for {
n, err := file.Read(buffer)
if n > 0 {
totalBytes += n
fmt.Printf("%s", string(buffer[:n]))
}
if err != nil {
break
}
}
fmt.Printf("\nTotal bytes read: %d\n", totalBytes)
}
Результат выполнения кода:
"Hello, this is test file."
"Total bytes read: 27"
Пример
Давайте обработаем ошибку конца файла, используя константу io.EOF:
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("example.txt")
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
buffer := make([]byte, 32)
for {
n, err := file.Read(buffer)
if err != nil {
if err == io.EOF {
fmt.Println("End of file reached")
break
}
fmt.Println("Error reading file:", err)
return
}
fmt.Printf("Read %d bytes: %s\n", n, string(buffer[:n]))
}
}
Результат выполнения кода:
"Read 27 bytes: Hello, this is test file."
"End of file reached"
Смотрите также
-
функцию
os.Open,
которая открывает файл для чтения -
функцию
os.ReadFile,
которая читает файл целиком -
метод
os.File.Write,
который записывает данные в файл -
метод
os.File.Close,
который закрывает открытый файл