23/04/2021 - GO
Bu örnekte, mevcut bir klasörde geçici bir dosya oluşturacağız ve onu orada saklayacağız. Bu, işiniz bittiğinde bu dosyadan kurtulmak istiyorsanız kullanışlı bir çözümdür. Ayrıca geçici bir klasör de oluşturabilirsiniz. Diğer kullanımları buradan görebilirsiniz.
package main
import (
"log"
)
func main() {
str := NewStorage()
if err := str.Write([]byte("Hello World!")); err != nil {
log.Fatalln(err)
}
path, err := str.Store("tmp/", ".txt")
if err != nil {
log.Fatalln(err)
}
log.Println(path)
// Result
// tmp/606364987.txt
}
package main
import (
"bytes"
"io/ioutil"
)
type Storage struct {
*bytes.Buffer
}
func NewStorage() *Storage {
return &Storage{
&bytes.Buffer{},
}
}
// Write appends each data chunk to the current buffer.
func (s *Storage) Write(chunk []byte) error {
_, err := s.Buffer.Write(chunk)
return err
}
// Store creates a new globally unique temporary file and stores in a specific
// directory. Given that this is a "temporary" file, you should handle removing
// the file. E.g. defer os.Remove(tmp.Name())
func (s *Storage) Store(dir, ext string) (string, error) {
tmp, err := ioutil.TempFile(dir, "*"+ext)
if err != nil {
return "", err
}
defer tmp.Close()
if _, err := tmp.Write(s.Buffer.Bytes()); err != nil {
return "", err
}
return tmp.Name(), nil
}