2017-06-22 108 views
-4

是否有任何函数调用或从golang中的文本文件中删除前N个字节的简单方法?假设文件被各种go-routines附加争用,同时我想删除前N个字节的文件。从文本文件中删除前N个字节

+4

有没有办法做到这一点在任何语言,因为这不是多么文件。另外,同时写入文件通常不是一个好主意,因为写入操作可能是交错的。 – JimB

回答

1

你需要做f.Seek跳过第一字节,比定期做阅读,请例如:

package main 

import (
    "fmt" 
    "io" 
    "io/ioutil" 
    "os" 
) 

func main() { 
    f, err := os.Open(os.Args[1])   // open file from argument 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 

    var skipBytes int64 = 5     // how many bytes to skip 

    _, err = f.Seek(skipBytes, io.SeekStart) // skipping first bytes 
    if err != nil { 
     fmt.Println(err) 
     return 
    } 

    buffer := make([]byte, 1024)    // allocating buffer to read 
    for { 
     n, err := f.Read(buffer)    // reading 
     fmt.Print(string(buffer[:n]))   // writing to console 
     if err != nil { 
      fmt.Printf("Err: %v\n", err) 
      return 
     } 
    } 
} 
+0

感谢您的解决方案 – Vicky

+0

@Vicky如果此解决方案解决您的问题,请将答案标记为已接受。谢谢。 –

+0

感谢您的帮助。我使用下面的方法,但它移动整个文件内容不是N字节。 数据,_:= ioutil.ReadFile(srcFilePath)\t //读取的src到数据的所有内容 _ = ioutil.WriteFile(destFilePath,数据,0777)\t //将数据写入到DST errTrunc:= os.Truncate (srcFilePath,0)//清空文件 – Vicky