1
0
mirror of https://github.com/golang/go synced 2024-09-30 16:18:35 -06:00

io.ReadFile

R=r,rsc
DELTA=64  (63 added, 0 deleted, 1 changed)
OCL=29702
CL=29702
This commit is contained in:
Robert Griesemer 2009-06-01 19:00:07 -07:00
parent c17ce9f94f
commit 34d12bfbae
3 changed files with 66 additions and 1 deletions

View File

@ -45,6 +45,7 @@ O1=\
O2=\
pipe.$O\
utils.$O\
phases: a1 a2
@ -55,7 +56,7 @@ a1: $(O1)
rm -f $(O1)
a2: $(O2)
$(AR) grc _obj$D/io.a pipe.$O
$(AR) grc _obj$D/io.a pipe.$O utils.$O
rm -f $(O2)

27
src/lib/io/utils.go Normal file
View File

@ -0,0 +1,27 @@
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Utility functions.
package io
import (
"io";
"os";
)
// ReadFile reads the file named by filename and returns
// its contents if successful.
//
func ReadFile(filename string) ([]byte, os.Error) {
f, err := os.Open(filename, os.O_RDONLY, 0);
if err != nil {
return nil, err;
}
var b io.ByteBuffer;
_, err := io.Copy(f, &b);
f.Close();
return b.Data(), err;
}

37
src/lib/io/utils_test.go Normal file
View File

@ -0,0 +1,37 @@
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io
import (
"io";
"os";
"testing";
)
func checkSize(t *testing.T, path string, size uint64) {
dir, err := os.Stat(path);
if err != nil {
t.Fatalf("Stat %q (looking for size %d): %s", path, size, err);
}
if dir.Size != size {
t.Errorf("Stat %q: size %d want %d", path, dir.Size, size);
}
}
func TestReadFile(t *testing.T) {
filename := "rumpelstilzchen";
contents, err := ReadFile(filename);
if err == nil {
t.Fatalf("ReadFile %s: error expected, none found", filename);
}
filename = "utils_test.go";
contents, err = ReadFile(filename);
if err != nil {
t.Fatalf("ReadFile %s: %v", filename, err);
}
checkSize(t, filename, uint64(len(contents)));
}