2017-06-22 110 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