Skip to content

Instantly share code, notes, and snippets.

@neetsdkasu
Last active November 20, 2020 09:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save neetsdkasu/e88df49e1178d06b4f8e84f4c29987ee to your computer and use it in GitHub Desktop.
Save neetsdkasu/e88df49e1178d06b4f8e84f4c29987ee to your computer and use it in GitHub Desktop.
一時ファイルをnotepad.exeに渡してから読み込む
package main
import (
"bytes"
"encoding/binary"
"io/ioutil"
"log"
"os"
"os/exec"
"unicode/utf16"
)
func main() {
if err := run(); err != nil {
log.Println(err)
}
}
func run() error {
f, err := ioutil.TempFile("", "foobar_*.txt")
if err != nil {
return err
}
defer os.Remove(f.Name())
if err = f.Close(); err != nil {
return err
}
cmd := exec.Command("notepad.exe", "/W", f.Name())
if err = cmd.Run(); err != nil {
return err
}
blob, err := ioutil.ReadFile(f.Name())
if err != nil {
return err
}
if len(blob) == 0 {
log.Println("nodata")
return nil
}
r := bytes.NewReader(blob)
data := make([]uint16, len(blob)/2)
if err = binary.Read(r, binary.LittleEndian, data); err != nil {
return err
}
s := utf16.Decode(data[1:])
log.Println(string(s))
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment