Golang之文件读写
读写文件,不添加文件路径,默认写入到GOPATH路径下
终端读写:
源码
func Sscanf
func Sscanf(str string, format string, a ...interface{}) (n int, err error)
解释:Sscanf scans the argument string, storing successive space-separated values into successive arguments as determined by the format.
It returns the number of items successfully parsed. Newlines in the input must match newlines in the format.
package main import "fmt" //终端读写
type student struct {
Name string
Age int
Score float32
} func main() {
var str = "stu01 18 89.92"
var stu student
fmt.Sscanf(str, "%s %d %f", &stu.Name, &stu.Age, &stu.Score)
fmt.Println(stu)
}
文本I/O缓冲:
源码
func NewReader
func NewReader(rd io.Reader) *Reader
NewReader returns a new Reader whose buffer has the default size.
-
package main import (
"bufio"
"fmt"
"os"
) func main() {
reader := bufio.NewReader(os.Stdin)
str, err := reader.ReadString('\n')
if err != nil {
fmt.Println("read string,err:", err)
return
}
fmt.Printf("read str succ,ret:%s\n", str)
}
打开文件,读取
package main import (
"bufio"
"fmt"
"os"
) //读取文件 func main() {
//打开一个文件
file, err := os.Open("D:/project/src/go_dev/day7/example4/123.log")
if err != nil {
fmt.Println("read file err:", err)
return
}
//重点,文件要关闭
defer file.Close()
/*
func NewReaderSize
func NewReaderSize(rd io.Reader, size int) *Reader
NewReaderSize returns a new Reader whose buffer has at least the specified size.
If the argument io.Reader is already a Reader with large enough size, it returns the underlying Reader.
*/
reader := bufio.NewReader(file)
//文件若不是换行结尾,就算出错
str, err := reader.ReadString('\n')
if err != nil {
fmt.Println("read string failed,err:", err)
return
}
fmt.Printf("read str success,result:%s\n", str)
}
ReadString源码
/*
func (*Reader) ReadString ¶ func (b *Reader) ReadString(delim byte) (string, error)
ReadString reads until the first occurrence of delim in the input, returning a string containing the data up to and including the delimiter.
If ReadString encounters an error before finding a delimiter, it returns the data read before the error and the error itself (often io.EOF).
ReadString returns err != nil if and only if the returned data does not end in delim. For simple uses, a Scanner may be more convenient.
*/
-读取一行的字符个数
package main import (
"fmt"
"os"
) /*
从终端读取一行字符串,统计英文、数字、空格以及其他字符的数量
*/
import (
"bufio"
"io"
) type CharCount struct {
ChCount int
NumCount int
SpaceCount int
OtherCount int
} func main() {
file, err := os.Open("D:/project/src/go_dev/day7/example4/123.log")
if err != nil {
fmt.Println("read file err:", err)
return
}
defer file.Close()
var count CharCount
reader := bufio.NewReader(file) for {
str, err := reader.ReadString('\n')
if err == io.EOF {
break
}
if err != nil {
fmt.Printf("read file failed,err:%v", err)
break
}
runeArr := []rune(str)
for _, v := range runeArr {
switch {
case v >= 'a' && v <= 'z':
fallthrough
case v >= 'A' && v <= 'Z':
count.ChCount++
case v == ' ' || v == '\t':
count.SpaceCount++
case v >= '' && v <= '':
count.NumCount++
default:
count.OtherCount++
}
}
}
fmt.Printf("char count:%d\n", count.ChCount)
fmt.Printf("num count:%d\n", count.NumCount)
fmt.Printf("space count:%d\n", count.SpaceCount)
fmt.Printf("other count:%d\n", count.OtherCount)
}
字符统计
文件写入

--
package main import (
"bufio"
"fmt"
"os"
)
func main(){
outputFile,outputError:=os.OpenFile("output.dat",os.O_WRONLY|os.O_CREATE,)
if outputError!=nil{
fmt.Printf("An error occurred with file crea ion\n")
return
}
//在函数执行结束前,一定要关闭,谨记
defer outputFile.Close()
outputWriter:=bufio.NewWriter(outputFile)
outputString:="hello world!\n"
for i:=;i<;i++{
outputWriter.WriteString(outputString)
}
outputWriter.Flush()//刷新落地
}
golang的复制文件
package main import (
"fmt"
"io"
"os"
) func main() {
//os.Args是string的切片,用来存储所有的命令行参数
w, err := CopyFile(os.Args[], os.Args[])
if err != nil {
fmt.Println(err.Error())
}
fmt.Println(w)
}
func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, )
if err != nil {
return
}
defer dst.Close()
//把src内容写进dst里面
return io.Copy(dst, src)
}
命令行参数
package main import (
"fmt"
"os"
) func main() {
fmt.Printf("len of args:%d\n", len(os.Args))
for i, v := range os.Args {
fmt.Printf("args[%d]=%s\n", i, v)
}
}
flag包用于实现命令行参数
例如Linux下的 ls -l
package main import (
"flag"
"fmt"
)
//flag包支持命令行参数
func main() {
var confPath string
var logLevel int
flag.StringVar(&confPath, "c", "", "Please input conf path")
flag.IntVar(&logLevel, "d", , "PLEASE INPUT LOG LEVEL")
flag.Parse()
fmt.Println("path:", confPath)
fmt.Println("log leve:", logLevel)
}
Golang之文件读写的更多相关文章
- Golang对文件读写操作
package main import ( "bufio" "fmt" "io" "os" ) //写 func Wri ...
- Golang的文件处理方式-常见的读写姿势
Golang的文件处理方式-常见的读写姿势 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 ...
- Golang: 常用的文件读写操作
Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式. 一.读取文件内容 1.按字节读取文件 这种方式是以字节为单位来读取,相对底层一些 ...
- Golang的文件处理方式-常见的读写
在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄.注意,标准输入 os.Stdin 和标准输出 os.Stdout ,他们的类型都是 *os.File 哟.在 ...
- golang(7):文件读写 & json & 错误处理
终端读写 操作终端相关文件句柄常量 os.Stdin // 标准输入 os.Stdout // 标准输出 (输出到终端) os.Stderr // 标准错误输出 (输出到终端) fmt 常见用法 fm ...
- 【Win 10 应用开发】文件读写的三种方案
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调
近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...
- Android 文件读写
一.分类 文件读写作为Android四大数据存储方式之一,又分为内部存储和外部存储两种: (1)内部存储(Internal storage): 总是可用. 文件默认情况存储在/data/data/包名 ...
随机推荐
- flv格式的播放代码
<object classid="clsid:D27CDB6E-AE6D-444553540000" class="player2" codebase=& ...
- alsa-lib、alsa-utils移植
/************************************************************************** * alsa-lib.alsa-utils移植 ...
- I.MX6 Linux U-boot 环境变量解析
/********************************************************************************** * I.MX6 Linux U- ...
- Jenkins构建常见问题
最近在用jenkins搭建.NET自动编译发布环境时遇到的一些问题,解释不一定都对,仅记录以备后用. 1.MSBUILD : error MSB1008: 只能指定一个项目 Build a Visua ...
- [CLPR] 卷积神经网络的结构
本文翻译自: http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi ...
- Ninject Lazy Load问题
参考: http://stackoverflow.com/questions/2538132/lazy-loading-with-ninject 方案一: public class Module : ...
- POJ 2395 Out of Hay(求最小生成树的最长边+kruskal)
Out of Hay Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18472 Accepted: 7318 Descr ...
- [转]Explorer.exe的命令行参数
本文来自:Explorer.exe的命令行参数 摘要 本文讲述explorer.exe(资源管理器)的命令行. 语法 EXPLORER.EXE [/n][/e][,/root,<object&g ...
- httpclient跳过https请求的验证
一.因为在使用https发送请求的时候会涉及,验证方式.但是这种方式在使用的时候很不方便.特别是在请求外部接口的时候,所以这我写了一个跳过验证的方式.(供参考) 二.加入包,这里用的是commons- ...
- SpringAOP的两种实现方式
1.SpringAOP,面向切面编程.在实际应用汇总很常见,一般用于日志.异常保存.也可以针对于相应的业务做处理 AOP核心概念 1.横切关注点 对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横 ...