Как к чтению-записи из файла использование Идут?

Вы не должны заботиться. Необходимо использовать int большую часть времени. Это поможет портированию Вашей программы к более широкой архитектуре в будущем (в настоящее время int, псевдоним к System.Int32, но это могло измениться). Только, когда разрядная ширина переменных вопросов (например: управлять расположением в память о struct), необходимо использовать int32 и другие (со связанным" using System;").

274
задан John Weldon 5 October 2017 в 08:42
поделиться

4 ответа

[] байт - это фрагмент (аналогичный подстроке) всего или части массива байтов. Подумайте о срезе как о структуре значений со скрытым полем указателя для системы, чтобы найти и получить доступ ко всему или части массива (срез), плюс поля для длины и емкости среза, к которым вы можете получить доступ, используя len () и cap () функции.

Вот вам рабочий стартовый комплект, который читает и печатает двоичный файл; вам нужно будет изменить буквальное значение inName , чтобы ссылаться на небольшой файл в вашей системе.

package main
import (
    "fmt";
    "os";
)
func main()
{
    inName := "file-rw.bin";
    inPerm :=  0666;
    inFile, inErr := os.Open(inName, os.O_RDONLY, inPerm);
    if inErr == nil {
        inBufLen := 16;
        inBuf := make([]byte, inBufLen);
        n, inErr := inFile.Read(inBuf);
        for inErr == nil {
            fmt.Println(n, inBuf[0:n]);
            n, inErr = inFile.Read(inBuf);
        }
    }
    inErr = inFile.Close();
}
10
ответ дан 23 November 2019 в 02:11
поделиться

Просто взглянув на документацию, кажется, что вам нужно просто объявить буфер типа [] byte и передать его для чтения, который затем будет читать до этого количества символов и возвращать количество фактически прочитанных символов (и ошибка).

Документы говорят, что

Read читает до len (b) байтов из файла. Он возвращает количество прочитанных байтов и ошибку, если таковая имеется. EOF сигнализируется нулевым счетчиком с err, установленным на EOF.

Разве это не работает?

РЕДАКТИРОВАТЬ: Также, я думаю, вам, возможно, следует использовать интерфейсы Reader / Writer, объявленные в пакете bufio вместо использования пакета os .

1
ответ дан 23 November 2019 в 02:11
поделиться

Попробуйте следующее:

package main

import (
  "io"; 
  )


func main() {
  contents,_ := io.ReadFile("filename");
  println(string(contents));
  io.WriteFile("filename", contents, 0644);
}
7
ответ дан 23 November 2019 в 02:11
поделиться

Это хорошая версия:

package main

import (
  "io/ioutil"; 
  )


func main() {
  contents,_ := ioutil.ReadFile("plikTekstowy.txt")
  println(string(contents))
  ioutil.WriteFile("filename", contents, 0644)
}
48
ответ дан 23 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: