Как говорится в заголовке, у меня проблема с чтением файла, в который я записал незадолго до чтения.Читатель паникует с EOF
.Я отлаживал различные внутренние компоненты go, и кажется, что по какой-то причине он не может прочитать какой-либо контент из источника, хотя источник синхронизирован с файловой системой (что подтверждается остановкой программы сразу после записи и проверкой файла с помощьюcat
)
Вот код
source, err := os.Create(DESKTOP + "/source.txt")
myPanic(err)
s := "Hello World\n"
_, err1 := source.Write([]byte(s))
myPanic(err1)
source.Sync()
buff := make([]byte, 56)
_, err2 := source.Read(buff)
myPanic(err2)e
Как уже упоминалось, source.Sync()
не имеет никакого эффекта, но закрытие файла и его повторное открытие решает проблему.
В документе doc для os.Create()
указано, что файл создан с O_RDWR
, что говорит о том, что использовать файл таким способом можно.Я думаю, что что-то упустил по пути.
Просто ради полноты: пример - это не оригинальная проблема, с которой я столкнулся, а просто простейший возможный случай, который я придумал после своего исследования.
Изначально я хотел скопировать исходный файл с помощью os.Copy
, который создает пустой конечный файл.