В настоящее время я пишу некоторые идентификаторы файла, last_imported.txt
. Каждый раз, когда я импортировал идентификатор, я хочу, чтобы файл содержал только это.WriteFile cancel mid-way
Похоже, что ioutil.WriteFile("last_import.txt", []byte(id), 0644)
выполнит эту работу, однако он случайно оставляет файл пустым, не записывая новый идентификатор, когда я отменяю работу во время работы, имитируя внезапный сбой.
Я подозреваю, что всякий раз, когда он оставляет его пустым, это потому, что f.write(data)
так и не был достигнут.
func WriteFile(filename string, data []byte, perm os.FileMode) error {
f, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm)
if err != nil {
return err
}
n, err := f.Write(data)
if err == nil && n < len(data) {
err = io.ErrShortWrite
}
if err1 := f.Close(); err == nil {
err = err1
}
return err
}
Как я могу убедиться, что файл не останется пустым?
Почему бы не проверить вас подозрение, добавив протоколирование? –