读写文件,不添加文件路径,默认写入到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之文件读写的更多相关文章

  1. Golang对文件读写操作

    package main import ( "bufio" "fmt" "io" "os" ) //写 func Wri ...

  2. Golang的文件处理方式-常见的读写姿势

    Golang的文件处理方式-常见的读写姿势 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄 ...

  3. Golang: 常用的文件读写操作

    Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式. 一.读取文件内容 1.按字节读取文件 这种方式是以字节为单位来读取,相对底层一些 ...

  4. Golang的文件处理方式-常见的读写

    在 Golang 语言中,文件使用指向 os.File 类型的指针来表示的,也叫做文件句柄.注意,标准输入 os.Stdin 和标准输出 os.Stdout ,他们的类型都是 *os.File 哟.在 ...

  5. golang(7):文件读写 & json & 错误处理

    终端读写 操作终端相关文件句柄常量 os.Stdin // 标准输入 os.Stdout // 标准输出 (输出到终端) os.Stderr // 标准错误输出 (输出到终端) fmt 常见用法 fm ...

  6. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

  7. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  8. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  9. Android 文件读写

    一.分类 文件读写作为Android四大数据存储方式之一,又分为内部存储和外部存储两种: (1)内部存储(Internal storage): 总是可用. 文件默认情况存储在/data/data/包名 ...

随机推荐

  1. Ubuntu系统配置apt-get软件更新源

    从别人那摘录的Ubuntu源,测的很好用 # 电子科技大学 (教育网) deb http://ubuntu.uestc.edu.cn/ubuntu/ oneiric main restricted u ...

  2. JS字符串的问题

    首先,搞了好几个小时,头都大了,原来出在字符串问题上. 具体如下: 今天做Yii,遇到用JQuery 的AJAX方法做注册验证,把传回来的字符串与textField中的比较,发现相等,但是就是不出结果 ...

  3. Spring Model存储值在jsp EL表达式中不能正确显示(原样显示)问题

    这几天我搭了一个SpringMvc环境,写了一个Controller,并且Controller里面有一个很简单的映射到jsp页面的方法,如下: 这里的Map<String,String>其 ...

  4. flow 类型生成工具 flow-typed 简单使用

    flow 是一个javascript 的静态检查工具,flow-typed 为我们提供了三方类似type 的生成 安装flow-typed 使用全局安装 yarn global add flow-ty ...

  5. 【转】嵌入式Linux文件系统启动脚本及分析

    原文网址:http://www.linuxidc.com/Linux/2011-03/33728.htm 在内核初始化完成后,嵌入式linux 文件系统的启动过程主要包含以下几个步骤: 1. 执行/s ...

  6. 解决hue查询中文报错问题

    hue 4.0查询查询中包含中文报一下错误 (1366, Incorrect string value: \\xE4\\xBA\\xAC\\xE4\\xB8\\x9C... for column se ...

  7. 谜一样的jquery之$选择器

    jquery是一个强大的js类库,提供了很多便利的操作方法并兼容不同的浏览器,一旦使用便欲罢不能,根本停不下来,今天我们就来解读一下这个神秘的jquery源代码. 前几天思考再三,自己尝试着封装了一下 ...

  8. Python中表达式和语句及for、while循环练习

    Python中表达式和语句及for.while循环练习 1)表达式 常用的表达式操作符: x + y, x - y x * y, x / y, x // y, x % y 逻辑运算: x or y, ...

  9. 学习笔记之C# 教程 | 菜鸟教程

    C# 教程 | 菜鸟教程 http://www.runoob.com/csharp/csharp-tutorial.html 菜鸟教程在线编辑器 http://www.runoob.com/try/r ...

  10. Linux常用系统函数

    Linux常用系统函数 一.进程控制 fork 创建一个新进程clone 按指定条件创建子进程execve 运行可执行文件exit 中止进程_exit 立即中止当前进程getdtablesize 进程 ...