Membaca Data daripada Fail Sementara dalam Go After Writing
In Go, menggunakan ioutil.TempFile untuk mencipta fail sementara membenarkan penulisan kepada fail tersebut. Walau bagaimanapun, membaca data daripada fail kemudiannya boleh menghadapi cabaran, kerana penuding fail dialihkan ke penghujung fail semasa menulis.
Untuk menangani perkara ini, penyelesaiannya melibatkan penetapan semula penuding fail ke permulaan fail selepas menulis, membolehkan pembacaan data. Ini boleh dicapai menggunakan kaedah Seek jenis *os.File. Selain itu, adalah disyorkan untuk menutup fail menggunakan penangguhan untuk memastikan pelepasan sumber yang betul.
Berikut ialah contoh yang menunjukkan pelaksanaan yang betul:
import ( "bufio" "fmt" "io/ioutil" "log" "os" "path/filepath" ) func main() { tmpFile, err := ioutil.TempFile("", fmt.Sprintf("%s-", filepath.Base(os.Args[0]))) if err != nil { log.Fatal("Could not create temporary file", err) } defer tmpFile.Close() fmt.Println("Created temp file:", tmpFile.Name()) fmt.Println("Writing some data to the temp file") if _, err := tmpFile.WriteString("test data"); err != nil { log.Fatal("Unable to write to temporary file", err) } else { fmt.Println("Data should have been written") } fmt.Println("Trying to read the temp file now") // Seek the pointer to the beginning tmpFile.Seek(0, 0) s := bufio.NewScanner(tmpFile) for s.Scan() { fmt.Println(s.Text()) } if err := s.Err(); err != nil { log.Fatal("error reading temp file", err) } }
Dengan memasukkan pengubahsuaian ini, program ini boleh membaca data daripada fail sementara dengan pasti selepas menulis kepadanya.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Data daripada Fail Sementara dalam Go After Writing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!