가서, 우리가 패키지 ioutil 선택 파일을 읽고 쓸 수있는 여러 가지 방법이 있습니다
메모리에 파일을 읽으려면
주요 패키지 가져 오기 ( " IO / ioutil " " FMT " ) FUNC 메인 () { 데이터, ERR : = ioutil.ReadFile ( " a.txt이 " ) #은 데이터 바이트 슬라이스에 의해 반환되는 IF ! ERR = 전무 { FMT .Println ( " 파일 읽기 오류 " , ERR) } fmt.Println ( 문자열 (데이터)) }
이진 파일 바인드 말하기
packr
파일 (예를 들어 정적 것인가 .txt
에 파일) .go
파일을 한 후, .go
파일을 직접 바이너리 파일에 포함됩니다. packer
매우 지능, 개발하는 동안, 당신은 디스크가 아닌 바이너리에서 정적 파일을 얻을 수 있습니다. 개발하는 동안, 경우에만 정적 파일 변경, 다시 컴파일 할 필요가 없습니다.
기본 패키지 수입 ( " FMT " " github.com/gobuffalo/packr " ) FUNC 주 () { : 상자 (= packr.NewBox " ../a.txt " ) 데이터 : = box.String ( " TEST.TXT을 " ) fmt.Println ( " 파일의 내용 : " 데이터) }
라인하여 파일 라인을 읽기
주요 패키지 가져 오기 ( " BUFIO " " 플래그 " " FMT " " 로그인 " " OS를 " ) ) FUNC의 주를 ({ // fptr : = flag.String ( " FPATH " , " 있는 test.txt " , " 파일의 경로에서 읽기 " ) //flag.Parse () F, ERR : =에게 os.Open는 ("a.txt이 " ) // bufio는 *의 os.File 유형입니다, 그래서 우리는 다른 방법을 읽을 수 있기 때문에 필요한 다음 소개 나중에 경우 ERR! = 전무 { 로그인합니다.치명적인 (ERR) } ) {FUNC를 (연기 하는 경우ERR = f.Close (); ERR =! 닐 { log.Fatal (ERR) } } () S : = bufio.NewScanner (F) 에 대한 s.Scan () { fmt.Println (s.Text ()) } ERR = s.Err () 만약 ERR! = 전무 { log.Fatal (ERR) } }
블록 파일을 읽을
파일이 특히 RAM 메모리의 불충분 한 양의 경우, 매우 큰 경우, 전체 파일이 이해가되지 않는 메모리에 읽습니다. 더 좋은 방법은 파일 블록을 읽는 것입니다. 이것은 bufio 패키지를 사용하여 수행 할 수 있습니다.
기본 패키지 수입 ( " bufio " " 플래그 " " FMT " " 로그인 " " OS " ) () {주 FUNC : // fptr = flag.String ( " FPATH " , " 있는 test.txt " , " 파일 경로에서 읽기를 " ) //flag.Parse () F, ERR : = os.Open ("a.txt이 " ) 경우 ! ERR = 닐 { 로그.치명적인 (ERR) } {) (FUNC을 연기 하는 경우ERR = f.Close (); ERR =! 닐 { log.Fatal (ERR) } } () R : = bufio.NewReader (F) B : = 확인 ([] 바이트 , 3 ) 에 대한 { _, ERR : = r.Read (b) 만약 ERR ! = 전무 { fmt.Println ( " 파일을 읽는 중 오류 발생 " , ERR) 휴식 } fmt.Println ( 문자열 (B)) } }