当前位置: 首页>>代码示例>>Golang>>正文


Golang Reader.ReadBytes方法代码示例

本文整理汇总了Golang中bufio.Reader.ReadBytes方法的典型用法代码示例。如果您正苦于以下问题:Golang Reader.ReadBytes方法的具体用法?Golang Reader.ReadBytes怎么用?Golang Reader.ReadBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在bufio.Reader的用法示例。


在下文中一共展示了Reader.ReadBytes方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: parseIndexEntry

func parseIndexEntry(r *bufio.Reader) (entry *IndexEntry, err error) {
	var binEntry indexEntry
	err = binary.Read(r, ord, &binEntry)
	if err != nil {
		return nil, err
	}

	// TODO: what if it is corrupted and too long?
	name, e := r.ReadBytes(token.NUL)
	if e != nil {
		return nil, e
	}
	name = util.TrimLastByte(name) // get rid of NUL

	// don't ask me how I figured this out after
	// a 14 hour workday
	leftOver := 7 - (len(name)+6)%8
	for j := 0; j < leftOver; j++ {
		// TODO: read the bytes at once somehow
		if _, err = r.ReadByte(); err != nil {
			return nil, err
		}
	}

	// record the entry
	return toIndexEntry(&binEntry, string(name)), nil
}
开发者ID:jbrukh,项目名称:ggit,代码行数:27,代码来源:index.go

示例2: writeTranslatedFile

func writeTranslatedFile(context *FileContext, outFile *os.File) error {

	var sourceFile *os.File
	var sourceReader *bufio.Reader
	var line string
	var rawLine []byte
	var err error

	sourceFile, err = os.Open(context.fullPath)
	if err != nil {
		return err
	}
	defer sourceFile.Close()

	sourceReader = bufio.NewReader(sourceFile)

	for {
		rawLine, err = sourceReader.ReadBytes('\n')
		if err != nil {
			if err == io.EOF {
				break
			}
			return err
		}

		line = context.TranslateLine(string(rawLine))
		outFile.Write([]byte(line))
	}
	return nil
}
开发者ID:Knetic,项目名称:coiler,代码行数:30,代码来源:Translator.go

示例3: Unpack

func Unpack(reader *bufio.Reader) ([]byte, error) {

	return reader.ReadBytes('\n')
	//if global.PackSplitType =="breakline" {

	//	return reader.ReadBytes('\n')
	//}

	lengthByte, _ := reader.Peek(4)
	lengthBuff := bytes.NewBuffer(lengthByte)
	var length int32
	err := binary.Read(lengthBuff, binary.LittleEndian, &length)
	if err != nil {
		return nil, err
	}
	fmt.Println("Get length :", length)
	if int32(reader.Buffered()) < length+4 {
		return nil, err
	}

	pack := make([]byte, int(4+length))
	_, err = reader.Read(pack)
	if err != nil {
		return nil, err
	}
	return pack[4:], nil
}
开发者ID:weichaoduo,项目名称:zeromore,代码行数:27,代码来源:packet.go

示例4: Process

func (p Delimiter) Process(r *bufio.Reader) ([]byte, error) {
	b, err := r.ReadBytes(p.Delim)
	if err != nil {
		return nil, err
	}
	return bytes.TrimSpace(b), nil
}
开发者ID:samuelkadolph,项目名称:go,代码行数:7,代码来源:processor.go

示例5: readSimpleStr

func readSimpleStr(r *bufio.Reader) (Resp, error) {
	b, err := r.ReadBytes(delimEnd)
	if err != nil {
		return Resp{}, err
	}
	return Resp{typ: SimpleStr, val: b[1 : len(b)-2]}, nil
}
开发者ID:nickwales,项目名称:proxym,代码行数:7,代码来源:resp.go

示例6: readNetString

func readNetString(r *bufio.Reader) ([]byte, error) {

	lenBytes, err := r.ReadBytes(':')
	if err != nil {
		return []byte{}, err
	}
	i, err := strconv.ParseInt(string(lenBytes[:len(lenBytes)-1]), 10, 0)
	dataLen := int(i) // 0 on error, safe to check this first
	if dataLen > MAXLEN {
		err = fmt.Errorf("Proposed Length > MAXLEN")
		return []byte{}, err
	}
	if err != nil {
		err = fmt.Errorf("Error Parsing Length %#v", lenBytes)
		return []byte{}, err
	}

	data = data[:dataLen]
	_, err = io.ReadFull(r, data)
	if err != nil {
		err = fmt.Errorf("Error reading data")
		return []byte{}, err
	}
	b, err := r.ReadByte()
	if err != nil || b != ',' {
		err = fmt.Errorf("Missing terminator")
		return []byte{}, err
	}

	return data, nil
}
开发者ID:zhuyue1314,项目名称:aflfix,代码行数:31,代码来源:server.go

示例7: socksReadBytesUntil

func socksReadBytesUntil(r *bufio.Reader, end byte) ([]byte, error) {
	val, err := r.ReadBytes(end)
	if err != nil {
		return nil, err
	}
	return val, nil
}
开发者ID:clonly,项目名称:goptlib,代码行数:7,代码来源:socks.go

示例8: readPacket

func readPacket(br *bufio.Reader) ([]byte, error) {
	// Drop bytes preceding HEADER_BYTE
	_, err := br.ReadBytes(HEADER_BYTE)
	if err != nil {
		return nil, err
	}

	// Get packet length field
	packet := make([]byte, 4)
	read_bytes := 0
	for read_bytes < 4 {
		tmp := make([]byte, 4)
		nread, err := br.Read(tmp)
		if err != nil {
			return nil, err
		}
		copy(packet[read_bytes:], tmp[:nread])
		read_bytes += nread
	}
	pktlen := int(binary.BigEndian.Uint32(packet))

	// Get rest of packet
	packet = make([]byte, pktlen)
	read_bytes = 0
	for read_bytes < pktlen {
		tmp := make([]byte, pktlen)
		nread, err := br.Read(tmp)
		if err != nil {
			return nil, err
		}
		copy(packet[read_bytes:], tmp[:nread])
		read_bytes += nread
	}
	return packet, nil
}
开发者ID:kichuku,项目名称:deadchat,代码行数:35,代码来源:server.go

示例9: decodeIndex

func decodeIndex(rbuf *bufio.Reader, f *File) error {
	c, err := rbuf.Peek(len(blockIndex))
	if err != nil {
		if err == io.EOF {
			return nil
		}
		fmt.Printf("index-peek failed: %v\n", err)
		return err
	}
	if !bytes.Equal(c, blockIndex) {
		return nil
	}
	var ybuf []byte
	for {
		bline, err := rbuf.ReadBytes('\n')
		if err != nil {
			return err
		}
		ybuf = append(ybuf, bline...)
		if bytes.HasPrefix(bline, []byte("...")) {
			break
		}
	}
	err = yaml.Unmarshal(ybuf, &f.Index)
	return err
}
开发者ID:astrogo,项目名称:asdf,代码行数:26,代码来源:reader.go

示例10: parse

func parse(in *bufio.Reader) []Item {
	// Create the slice of items to be returned.  (This slice will be extended as necessary.)
	items := make([]Item, 0)

	// Parse each of the rules one by one.
	for {
		c, e := in.ReadByte()
		if e != nil || c == '}' {
			break
		}
		if c == ' ' || c == '\t' || c == '\n' || c == '\r' {
			continue
		}
		sel, e := in.ReadBytes('{')
		sel = bytes.Join([][]byte{[]byte{c}, sel}, []byte{})
		sel = sel[:len(sel)-1]
		sel = bytes.TrimSpace(sel)
		var t Item
		if c == '@' {
			t = parseQuery(sel[1:], in)
		} else {
			t = parseRule(sel, in)
		}
		if t != nil {
			items = append(items, t)
		}
	}

	return items
}
开发者ID:AntiMS,项目名称:Simple-CSS-Shrinker,代码行数:30,代码来源:parsecss.go

示例11: Read

// returns err == io.EOF when we hit EOF without any further data
func (self *GraphiteMetric) Read(reader *bufio.Reader) error {
	buf, err := reader.ReadBytes('\n')
	str := strings.TrimSpace(string(buf))
	if err != nil {
		if err != io.EOF {
			return fmt.Errorf("connection closed uncleanly/broken: %s\n", err.Error())
		}
		if str == "" {
			return err
		}
		// else we got EOF but also data, so just try to process it as valid data
	}
	elements := strings.Fields(str)
	if len(elements) != 3 {
		return fmt.Errorf("Received '%s' which doesn't have three fields", str)
	}
	self.name = elements[0]
	self.floatValue, err = strconv.ParseFloat(elements[1], 64)
	if err != nil {
		return err
	}
	if i := int64(self.floatValue); float64(i) == self.floatValue {
		self.isInt = true
		self.integerValue = int64(self.floatValue)
	}
	timestamp, err := strconv.ParseUint(elements[2], 10, 32)
	if err != nil {
		return err
	}
	self.timestamp = int64(timestamp * 1000000)
	return nil
}
开发者ID:Kenterfie,项目名称:influxdb,代码行数:33,代码来源:graphite_metric.go

示例12: main

func main() {
	app := cli.NewApp()
	app.Name = "bbq"
	app.Usage = "Tool to help you BBQ"
	app.Commands = []cli.Command{
		{
			Name:      "item",
			ShortName: "i",
			Usage:     "items needed for bbq",
			Action: func(c *cli.Context) {
				file, err := os.Open("items.txt")
				if err != nil {
					log.Fatal(err)
				}
				var reader *bufio.Reader
				var line []byte
				reader = bufio.NewReader(file)
				for {
					if err == io.EOF {
						return
					}
					line, err = reader.ReadBytes('\n')
					print(string(line))
				}
			},
		},
	}

	app.Run(os.Args)
}
开发者ID:hibachihack,项目名称:bbq,代码行数:30,代码来源:main.go

示例13: recvResponse

func recvResponse(r *bufio.Reader) (resp [][]byte, err error) {
	var s, arg []byte
	var argc int
	if s, err = r.ReadBytes(lfSign); err != nil {
		if err == io.EOF {
			err = io.ErrUnexpectedEOF
		}
		return nil, err
	}

	switch s[0] {
	case intSign:
		resp = append(resp, s[:len(s)-2])
	case okSign, errSign:
		resp = append(resp, s[:len(s)-2])
	case multiBulkSign:
		// read argc
		if argc, err = strconv.Atoi(string(s[1 : len(s)-2])); err != nil {
			return nil, err
		}
		// read argv
		for i := 0; i < argc; i++ {
			if arg, err = readArgv(r); err != nil {
				return nil, err
			}
			resp = append(resp, arg)
		}
	default:
		fmt.Printf("%s", s)
		return nil, fmt.Errorf("Protocol Error: unexpected '%c'", s[0])
	}

	return resp, nil
}
开发者ID:ChrisYangLiu,项目名称:kids,代码行数:34,代码来源:kids.go

示例14: readArgv

func readArgv(r *bufio.Reader) (arg []byte, err error) {
	var s []byte
	if s, err = r.ReadBytes(lfSign); err != nil {
		if err == io.EOF {
			err = io.ErrUnexpectedEOF
		}
		return nil, err
	}

	if s[0] == bulkSign {
		// read len
		var arglen, readlen int = 0, 0
		if arglen, err = strconv.Atoi(string(s[1 : len(s)-2])); err != nil {
			return nil, err
		}
		arg = make([]byte, arglen+2) // make sure to read "\r\n"
		if _, err := io.ReadFull(r, arg[readlen:]); err != nil {
			return nil, err
		}
		return arg[:len(arg)-2], nil
	} else if s[0] == intSign {
		return s[1 : len(s)-2], nil
	}

	return nil, errors.New("Protocol Error: expected $ or : but got " + string(s))
}
开发者ID:ChrisYangLiu,项目名称:kids,代码行数:26,代码来源:kids.go

示例15: Parse

// Parse
func (c *Config) Parse(r *bufio.Reader) error {
	var section string = "defaults"
	for {
		l, err := r.ReadBytes('\n')
		if err == io.EOF {
			break
		} else if err != nil {
			return err
		}
		switch {
		case PatternEmpty.Match(l):
			continue
		case PatternComment.Match(l):
			continue
		case PatternSection.Match(l):
			m := PatternSection.FindSubmatch(l)
			section = string(bytes.TrimSpace(m[1]))
		case PatternOption.Match(l):
			m := PatternOption.FindSubmatch(l)
			c.Set(section, string(bytes.TrimSpace(m[1])), string(bytes.TrimSpace(m[2])))
		default:
			return &ConfigSyntaxError{string(l)}
		}
	}
	return nil
}
开发者ID:MrPetru,项目名称:utils,代码行数:27,代码来源:conf.go


注:本文中的bufio.Reader.ReadBytes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。