在我们实际工作中,我们有直接读取不同云服务机器上的文件内容的需求。通常我们的做法是将云服务器上的文件下载到本地,然后使用io读取文件内容,然后再删掉这个临时文件。但这样做对于我们的直接目的来说是有了额外的消耗。所以,我们的做法是直接使用Http请求该文件,然后直接读取Body流中的数据即可。
代码如下
func ReadTxtData(filePath string) map[string]interface{}{
resp, err := http.Get(filePath)
defer resp.Body.Close()
reader := bufio.NewReaderSize(resp.Body, 1024*32)
if err != nil {
return nil
}
hashMapData := map[string]interface{}{}
for {
b, errR := reader.ReadBytes('\n') //按照行读取,遇到\n结束读取
if errR != nil {
if errR == io.EOF {
break
}
fmt.Println(errR.Error())
}
lineData := strings.TrimSuffix(strings.TrimSuffix( string(b), "\n"), "\r")
if len(lineData) > 0 {
hashMapData [lineData] = "1"
}
}
return hashMapData
}