2017-06-22 6 views
-4

golangのテキストファイルから最初のNバイトを削除する関数呼び出しや簡単な方法はありますか?ファイルが様々なゴールルーチンによって紛らわしく追加されていると仮定すると同時に、最初の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

関連する問題