zoukankan      html  css  js  c++  java
  • Golang理解-io注意事项

    io处理的选择方式

    io处理有很多方法,系统也为我们提供了几个包ioioutilbufio

    注册事项

    • 如果字符串大小不大,使用那个都行
    • 如果字符串过大,则需要使用bufio以及io包的一些方法

    ioutils.ReadString(f),会将f文件全部读取为一个字符串, 对内存开销大

    io.Copy(dest, src), 可以将src的内容流式copy到dest中

    ioutil.Discard 垃圾桶

    例如:

    package main
    
    import (
    	"fmt"
    	"io"
    	// "io/ioutil"
    	"net/http"
    	"os"
    )
    
    func main() {
    	if len(os.Args[1:]) < 1 {
    		fmt.Println("At least 1 params")
    		os.Exit(1)
    	}
    	for _, url := range os.Args[1:] {
    		res, err := http.Get(url)
    		if err != nil {
    			fmt.Println(err)
    			continue
    		}
    
    		f, _ := os.OpenFile("./a.log", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
    		defer f.Close()
    
    		_, err = io.Copy(f, res.Body)
    		if err != nil {
    			fmt.Println(err)
    			os.Exit(1)
    		}
    		// data, err := ioutil.ReadAll(res.Body)
    
    		defer res.Body.Close()
    	}
    }
    
    
  • 相关阅读:
    GO make&new区别
    GO 包相关
    GO 类型断言
    栈 队列 链表
    表达式求值
    动态规划 最长子序列
    04 单例模式
    02 简单工厂模式
    java设计模式 01 开山篇
    java基础07 多线程
  • 原文地址:https://www.cnblogs.com/vinsent/p/11283368.html
Copyright © 2011-2022 走看看