一个简单的例子,使用 file.Read(data) 读取文件,并且通过个http 发送给客户端。
package main
/* os 包练习 */
/* 这里也遇到一个问题就是,subline每次执行前最好保存一下刚修改的文件,否则 可能会不符合预期结果*/
/* regexp 使用參考:https://wizardforcel.gitbooks.io/golang-stdlib-ref/107.html#example-Regexp-FindStringSubmatch */
/* os 包使用参考: https://wizardforcel.gitbooks.io/golang-stdlib-ref/100.html */
import (
. "fmt"
"os"
"net/http"
"regexp"
)
/* 大部分 系统处理的功能 函数 */
/* 简单读取文件 */
func read_file(str string) (file_str string){
file, _ := os.Open("C:/Users/ywx741860/Desktop/go练习/"+str+ ".go") // For read access.
data := make([]byte, 100) // make([] byte, 100)
// var file_str string
defer file.Close() // 关闭文件对象
for{
_, err := file.Read(data) //Read 接收一个 字节切片类型, 读取填满传入的切片参数,返回 读取字节数量, 错误
if err != nil {
Printf("读取文件发生错误")
Printf("%v", err)
break
}
file_str += Sprintf("%s", string(data))
}
return file_str
}
/* 读取文件并发送到接口的返回数据 */
func simple_server(){
http.HandleFunc("/file", func(w http.ResponseWriter, r *http.Request){
url := r.URL
url_str := Sprintf("%s", url)
regx := regexp.MustCompile(".*?[?]file=(?P<file_name>.*)")
file_name := regx.FindStringSubmatch(url_str) // Find(All)?(String)?(Submatch)?(Index)? 这样记,参见下面的说明
Println(file_name)
Fprintf(w, "%s", read_file(file_name[1]))
})
http.ListenAndServe(":8003", nil)
}
效果:
/* os 函数的简单练习 /
/ os 包大致分为 系统和文件 两个大的操作部分 */
操作文件:
https://learnku.com/docs/build-web-application-with-golang/075-file-operation/3199
有疑问加站长微信联系(非本文作者)