main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Fetch prints the content found at a URL.
  2. package main
  3. import (
  4. "fmt"
  5. "io"
  6. "net/http"
  7. "os"
  8. "strings"
  9. )
  10. func main() {
  11. for _, url := range os.Args[1:] {
  12. if strings.HasPrefix(url, "http://") {
  13. fmt.Println("url:",url)
  14. } else {
  15. url = "http://" + url
  16. fmt.Println("url:",url)
  17. }
  18. resp, err := http.Get(url) //请求命令行参数传入的url
  19. fmt.Println("httpCode:",resp.Status)
  20. if err != nil {
  21. fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
  22. os.Exit(1)
  23. }
  24. //创建文件
  25. fp, err := os.Create("./demo.html") // 如果文件已存在,会将文件清空。
  26. fmt.Println(fp, err) // &{0xc000076780} <nil>
  27. fmt.Println("%T???", fp) // *os.File 文件指针类型
  28. if err != nil {
  29. fmt.Println("文件创建失败")
  30. //创建文件失败的原因有:
  31. //1、路径不存在 2、权限不足 3、打开文件数量超过上限 4、磁盘空间不足等
  32. return
  33. }
  34. b, err := io.Copy(fp, resp.Body) //读body中的数据,放到内存
  35. if err != nil {
  36. fmt.Println("iO.Copy函数报错")
  37. return
  38. }
  39. fp.Close()
  40. resp.Body.Close()
  41. fmt.Printf("b:%d", b) //打印出来
  42. }
  43. }