mirror of
https://github.com/avelino/awesome-go.git
synced 2024-11-14 16:42:23 +00:00
77 lines
1.8 KiB
Go
77 lines
1.8 KiB
Go
package main
|
||
|
||
import (
|
||
"bufio"
|
||
"log"
|
||
"os"
|
||
)
|
||
|
||
func main() {
|
||
// Yazmak için dosyayı aç
|
||
file, err := os.OpenFile("test.txt", os.O_WRONLY, 0666)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
defer file.Close()
|
||
|
||
// Dosyadan bir "buffered writer" oluştur
|
||
bufferedWriter := bufio.NewWriter(file)
|
||
|
||
// Arabelleğe byte yaz
|
||
bytesWritten, err := bufferedWriter.Write(
|
||
[]byte{65, 66, 67},
|
||
)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Bytes written: %d\n", bytesWritten)
|
||
|
||
// String'i belleğe(buffer) yaz
|
||
// Ayrıca bunlarda mevcut: WriteRune() ve WriteByte()
|
||
bytesWritten, err = bufferedWriter.WriteString(
|
||
"Buffered string\n",
|
||
)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Bytes written: %d\n", bytesWritten)
|
||
|
||
// Buffer beklenirken ne kadar depolandığını kontrol etme
|
||
unflushedBufferSize := bufferedWriter.Buffered()
|
||
log.Printf("Bytes buffered: %d\n", unflushedBufferSize)
|
||
|
||
// Kullanılabilir arabellek miktarını görme
|
||
bytesAvailable := bufferedWriter.Available()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Available buffer: %d\n", bytesAvailable)
|
||
|
||
// Belleği diske yaz
|
||
bufferedWriter.Flush()
|
||
|
||
// Henüz Flush() ile dosyaya yazılmamış arabellekte yapılan değişiklikleri geri alın.
|
||
bufferedWriter.Reset(bufferedWriter)
|
||
|
||
// Kullanılabilir arabellek miktarını görme
|
||
bytesAvailable = bufferedWriter.Available()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Available buffer: %d\n", bytesAvailable)
|
||
|
||
// Tamponu yeniden boyutlandırır.
|
||
// Bu kullanınmda aynı buffer'ı yeniden boyutlandırıp kullanıyoruz.
|
||
bufferedWriter = bufio.NewWriterSize(
|
||
bufferedWriter,
|
||
8000,
|
||
)
|
||
|
||
// Yeniden boyutlandırma sonrasında tekrar kullanılabilir arabellek miktarını kontrol etme
|
||
bytesAvailable = bufferedWriter.Available()
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
log.Printf("Available buffer: %d\n", bytesAvailable)
|
||
}
|