本文整理汇总了Golang中os.File.Stat方法的典型用法代码示例。如果您正苦于以下问题:Golang File.Stat方法的具体用法?Golang File.Stat怎么用?Golang File.Stat使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类os.File
的用法示例。
在下文中一共展示了File.Stat方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: replicationSlaveFullSync
// if full sync ok, return sync offset for later backlog syncing
func (h *Handler) replicationSlaveFullSync(c *conn) (syncOffset int64, resp redis.Resp, err error) {
// after bgsave, we must send this RDB to slave,
// so we don't allow others do bgsave before full sync done.
if ok := h.bgSaveSem.AcquireTimeout(time.Minute); !ok {
resp, err = toRespErrorf("wait others do bgsave timeout")
return
}
defer h.bgSaveSem.Release()
// now begin full sync
h.counters.syncFull.Add(1)
var rdb *os.File
rdb, syncOffset, err = h.replicationBgSave()
if err != nil {
resp, err = toRespError(err)
return
}
defer rdb.Close()
// send rdb to slave
st, _ := rdb.Stat()
rdbSize := st.Size()
if err = c.writeRDBFrom(rdbSize, rdb); err != nil {
// close this connection here???
log.Errorf("slave %s sync rdb err - %s", c, err)
c.Close()
return
}
return syncOffset, nil, nil
}
示例2: OpenFileOrStdDev
func OpenFileOrStdDev(path string, write bool) *os.File {
var fp *os.File
var err error
if path == "stdin" {
fp = os.Stdin
err = nil
} else if path == "stdout" {
fp = os.Stdout
err = nil
} else {
if write {
fp, err = os.Create(CleanPath(path))
} else {
fp, err = os.Open(CleanPath(path))
}
}
if err != nil {
log.Fatalln(err)
}
stat, statErr := fp.Stat()
if statErr != nil {
log.Fatalln(err)
}
if stat.IsDir() {
log.Fatalf("%s: is a directory\n", path)
}
return fp
}
示例3: UploadReleaseAsset
// UploadReleaseAsset creates an asset by uploading a file into a release repository.
// To upload assets that cannot be represented by an os.File, call NewUploadRequest directly.
//
// GitHub API docs : http://developer.github.com/v3/repos/releases/#upload-a-release-asset
func (s *RepositoriesService) UploadReleaseAsset(owner, repo string, id int, opt *UploadOptions, file *os.File) (*ReleaseAsset, *Response, error) {
u := fmt.Sprintf("repos/%s/%s/releases/%d/assets", owner, repo, id)
u, err := addOptions(u, opt)
if err != nil {
return nil, nil, err
}
stat, err := file.Stat()
if err != nil {
return nil, nil, err
}
if stat.IsDir() {
return nil, nil, errors.New("the asset to upload can't be a directory")
}
mediaType := mime.TypeByExtension(filepath.Ext(file.Name()))
req, err := s.client.NewUploadRequest(u, file, stat.Size(), mediaType)
if err != nil {
return nil, nil, err
}
asset := new(ReleaseAsset)
resp, err := s.client.Do(req, asset)
if err != nil {
return nil, resp, err
}
return asset, resp, err
}
示例4: main
func main() {
var APIOptions = oss.GetDefaultAPIOptioins()
APIOptions.AccessID = AccessKeyID
APIOptions.SecretAccessKey = AccessKeySecret
var OSSAPI, err = oss.NewAPI(APIOptions)
if err != nil {
log.Fatal(err)
}
var bucket = "ossgosdklargefile"
var object = "largefile.bin"
var bufSize = int64(1024 * 1024 * 2) // 2 M
var file = "test.bin"
var fp *os.File
if err = OSSAPI.PutBucket(bucket, oss.ACLPublicReadWrite, "", nil); err != nil {
log.Printf("%s\n", err)
}
var multi *oss.MultipartUpload
if multi, err = OSSAPI.NewMultipartUpload(bucket, object, nil); err != nil {
log.Printf("%s\n", err)
}
if fp, err = os.Open(file); err != nil {
log.Fatal(err)
}
var stat, _ = fp.Stat()
var fileLength = stat.Size()
var filePart = int(fileLength / bufSize)
if int64(filePart)*bufSize < fileLength {
filePart = filePart + 1
}
var rd io.Reader
var parts = make([]oss.Part, filePart)
var etag string
for i := 1; i <= filePart; i++ {
rd = io.LimitReader(fp, bufSize)
if etag, err = multi.UploadPart(i, rd); err != nil {
log.Printf("%s\n", err)
}
log.Printf("PartNumber: %d, ETag: %s\n", i, etag)
parts[i-1] = oss.Part{
PartNumber: i,
ETag: etag,
}
}
var result oss.CompleteMultipartUploadResult
if err = multi.CompleteUpload(parts, &result); err != nil {
log.Printf("%s\n", err)
}
log.Printf("Upload result: %s\n", result)
}
示例5: getSize
func getSize(f *os.File) (int64, error) {
fi, err := f.Stat()
if err != nil {
return 0, err
}
return fi.Size(), nil
}
示例6: parse
//----------------------------------------------- parse & load a game data file into dictionary
func parse(file *os.File) {
// csv 读取器
csv_reader := csv.NewReader(file)
records, err := csv_reader.ReadAll()
if err != nil {
ERR("cannot parse csv file.", file.Name(), err)
return
}
// 是否为空档
if len(records) == 0 {
ERR("csv file is empty", file.Name())
return
}
// 处理表名
fi, err := file.Stat()
if err != nil {
ERR("cannot stat the file", file.Name())
return
}
tblname := strings.TrimSuffix(fi.Name(), path.Ext(file.Name()))
// 记录数据, 第一行为表头,因此从第二行开始
for line := 1; line < len(records); line++ {
for field := 1; field < len(records[line]); field++ { // 每条记录的第一个字段作为行索引
_set(tblname, records[line][0], records[0][field], records[line][field])
}
}
}
示例7: GetFileSize
func GetFileSize(file *os.File) (size int64, err error) {
var fi os.FileInfo
if fi, err = file.Stat(); err == nil {
size = fi.Size()
}
return
}
示例8: NewBufferFile
// NewBufferFile maps a file to shared memory and returns a handle to the shared memory buffer
func NewBufferFile(file *os.File, size, prot int) (Buffer, error) {
fi, err := file.Stat()
if err != nil {
return nil, err
}
sys := fi.Sys().(*syscall.Stat_t)
if sys.Size != int64(size) {
return nil, errWrongSize
}
// Dup to allow file parameter to be closed regardless
fd, err := syscall.Dup(int(file.Fd()))
if err != nil {
return nil, err
}
const flags = syscall.MAP_SHARED
b, err := syscall.Mmap(fd, 0, size, prot, flags)
if err != nil {
return nil, err
}
// localFile is nil because fd is from somewhere else
buf := &sharedBuffer{os.NewFile(uintptr(fd), ""), nil, b, stackToKeep()}
runtime.SetFinalizer(buf, (*sharedBuffer).finalize)
return buf, nil
}
示例9: tarCp
func (g *GraphTool) tarCp(srcName string, tw *tar.Writer) (int64, error) {
var (
src *os.File
err error
)
if src, err = os.Open(srcName); err != nil {
return 0, err
}
defer src.Close()
srcStat, err := src.Stat()
if err != nil {
g.logger.Error(err.Error())
} else if err := unix.Fadvise(int(src.Fd()), 0, srcStat.Size(), unix.MADV_SEQUENTIAL); err != nil {
g.logger.Error(err.Error())
}
if n, err := io.Copy(tw, src); err != nil {
g.logger.Error(err.Error())
} else {
return n, nil
}
return 0, nil
}
示例10: isTTY
func isTTY(file *os.File) bool {
stat, err := file.Stat()
if err != nil {
log.Fatal(err)
}
return ((stat.Mode() & os.ModeCharDevice) != 0)
}
示例11: customReader
func customReader() ([]byte, int) {
var file *os.File
var err error
if section == nil {
file, err = os.Open(inputSampleFilename)
if err != nil {
panic(err)
}
fi, err := file.Stat()
if err != nil {
panic(err)
}
section = io.NewSectionReader(file, 0, fi.Size())
}
b := make([]byte, IO_BUFFER_SIZE)
n, err := section.Read(b)
if err != nil {
fmt.Println("section.Read():", err)
file.Close()
}
return b, n
}
示例12: ReadFile
func ReadFile(name string) (b []byte, e os.Error) {
var (
raw []byte
err os.Error
file *os.File
dir *os.Dir
)
file, err = os.Open(name, os.O_RDONLY, 0)
if err != nil {
return raw, err
}
dir, err = file.Stat()
if err != nil {
return raw, err
}
var size uint64 = dir.Size
raw = make([]byte, size)
_, err = file.Read(raw)
if err != nil {
return raw, err
}
return raw, err
}
示例13: StoreBlob
func (c *Conn) StoreBlob(file *os.File) (string, error) {
reader := hashed.NewSha1FileReader(file)
info, err := file.Stat()
if err != nil {
return "", err
}
size := info.Size()
if err := c.WriteJSONFrame(request{"store", "", size, false}); err != nil {
return "", err
}
if err := c.WriteBlobFrameFrom(reader, size); err != nil {
return "", err
}
key := util.HexHash(reader)
if err := c.WriteJSONFrame(request{Key: key}); err != nil {
return "", err
}
var res response
if err := c.ReadJSONFrame(&res); err != nil {
return "", err
}
if res.Val != "ok" {
return "", responseError(res)
}
return key, nil
}
示例14: LoadNeedleMap
func LoadNeedleMap(file *os.File) *NeedleMap {
nm := NewNeedleMap(file)
bytes := make([]byte, 16*RowsToRead)
count, e := nm.indexFile.Read(bytes)
if count > 0 {
fstat, _ := file.Stat()
log.Println("Loading index file", fstat.Name(), "size", fstat.Size())
}
for count > 0 && e == nil {
for i := 0; i < count; i += 16 {
key := util.BytesToUint64(bytes[i : i+8])
offset := util.BytesToUint32(bytes[i+8 : i+12])
size := util.BytesToUint32(bytes[i+12 : i+16])
if offset > 0 {
nm.m.Set(Key(key), offset, size)
//log.Println("reading key", key, "offset", offset, "size", size)
nm.fileCounter++
} else {
nm.m.Delete(Key(key))
//log.Println("removing key", key)
nm.deletionCounter++
}
}
count, e = nm.indexFile.Read(bytes)
}
return nm
}
示例15: RawToFixed
func RawToFixed(f *os.File, options *VHDOptions) {
info, err := f.Stat()
check(err)
size := uint64(info.Size())
header := CreateFixedHeader(size, options)
binary.Write(f, binary.BigEndian, header)
}