文档章节

GO 文件相关操作

汤汤圆圆
 汤汤圆圆
发布于 2018/11/15 11:01
字数 391
阅读 7
收藏 0
Go
package main

import(
	"fmt"
	"os"
	"bufio"
	"io"
	"io/ioutil"
)

type ChartCount struct{
	Chct int
	Spacect int
	Numberct int
	Otherct int
}

func main() {
	file,err := os.Open("./test.txt")
	if err != nil {
		fmt.Println("Open file fail", err)
	}
	defer file.Close()

	reader := bufio.NewReader(file)
	for {
		str,err := reader.ReadString('\n')
		if err == io.EOF {
			break
		}
		fmt.Print(str)
	}

	content,err := ioutil.ReadFile("./test.txt")
	if err != nil {
		fmt.Println("Read file fail ", err)
	}

	fmt.Printf("%v\n", content)
	fmt.Printf("%v\n", string(content))

	//写文件O_CREATE文件不存在创建, O_TRUNC清空文件, O_APPEND追加, (O_RDWR | O_APPEND)读写模式 并追加
	wfile,err := os.OpenFile("./test2.txt", os.O_WRONLY | os.O_CREATE, 0666)
	if err != nil {
		fmt.Println("Open file fail", err)
	}
	defer wfile.Close()

	writer := bufio.NewWriter(wfile)
	wstr  := "hello,world\n"
	for i := 0; i < 5; i++ { 
		writer.WriteString(wstr)
	}
	writer.Flush()

	rcontent,_ := ioutil.ReadFile("./test2.txt") 
	ioutil.WriteFile("./test3.txt", rcontent, 0666) //写文件

	//判断文件是否存在
	isexist,iserror := filePathIsExists("./test3.txt")
	if isexist {
		fmt.Println("文件or路径存在")
	}  else {
		fmt.Println("文件or路径不存在", iserror)
	}

	//copy文件
	copyFile("./test3.txt", "./test4.log")

	//统计一个文件里各个字符的个数
	var ct ChartCount
	ct.tj("./testCt.log")
	fmt.Printf("chartct=%v,spaceCt=%v,Numberct=%v,Otherct=%v", ct.Chct, ct.Spacect, ct.Numberct, ct.Otherct)
}

func filePathIsExists (path string) (bool,error) {
	_,error := os.Stat(path)
	if nil == error {
		return true,nil
	}
	if os.IsNotExist(error) {
		return false,nil
	}

	return false,error
}

func copyFile(srcfile string,  dstfile string) (written int64, err error) {
	rfile,err := os.Open(srcfile)
	if err != nil {
		fmt.Println("open rfile fail", err)
	}
	reader := bufio.NewReader(rfile)
	defer rfile.Close()
	wfile,err := os.OpenFile(dstfile, os.O_WRONLY | os.O_CREATE, 0666)
	if err != nil {
		fmt.Println("open wfile fail", err)
	}
	defer wfile.Close()
	writer := bufio.NewWriter(wfile)

	return io.Copy(writer, reader)
}

func (ct *ChartCount) tj(filename string) {
	file,err := os.Open(filename)
	if err != nil {
		fmt.Println("open rfile fail", err)
	}
	reader := bufio.NewReader(file)
	defer file.Close()
	for {
		str,err := reader.ReadString('\n')
		if err == io.EOF {
			break
		}
		for _,v := range str {
			switch{
				case v >= 'a' && v <= 'z':
					fallthrough
				case v >= 'A' && v <= 'Z':
					ct.Chct++
				case v == ' ' || v == '\t':
					ct.Spacect++
				case v >= 0	|| v <= 9:
					ct.Numberct++
				default:
					ct.Otherct++			
			}
		}
	}
}

© 著作权归作者所有

上一篇: GO redis 相关操作
下一篇: GO接口
汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26104
作品 0
昌平
程序员
私信 提问
Windows 系统最常用的一些快捷键

上周发表 Mac 系统快捷键,反响强烈,这周发布日常工作中常用的 Windows系统最常用的一些快捷键,希望帮助大家提高效率! 复制粘贴相关操作: Ctrl + X :剪切所选项 Ctrl + C (或 Ctrl + I...

一匹蒙古马
2018/01/14
0
0
[区块链]Hyperledger Fabric源代码(基于v1.0 beta版本)阅读之乐扣老师解读系列 (六)BSSCP包之UTILS工具包

四,核心包之BSSCP(区块链加密服务提供者)包之UTIL工具包 包内容简介:本包主要是和BCCSP(区块链加密服务提供者)相关的各核心文件的接口文件,主要是提供一些密码学相关的操作实现的借口...

lsttoy
2017/06/19
0
0
【JavsScript】JavsScript操作文件

简介: 要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。 FileSystemObject编程: 使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemO...

磊神Ray
2012/08/10
62
0
[深入理解文件系统之四] VFS和vnode

文件系统的进化史和人类文明的进化有些类似,都是从低级、封闭乃至对抗走向高级、开放和包容。在VFS一统江湖之前,其实还有它的前身FSS(File system Switch)。当时,人们寄希望于它能够兼容...

技术小甜
2017/11/09
0
0
Android App 与 U 盘通信详解

前言 对于 U 盘的了解,相信大多数人应该只停留在跟 U 盘跟电脑通信的阶段,其实现在通过 OTG 线就可以实现手机跟 U 盘之间的数据操作,不仅可以将 U 盘中的文件读取到手机中来,还能将手机中...

developerHaoz
2018/01/07
0
1

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
10
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部