兄弟连Go语言培训之文件操作2:实战案例
-
面议
Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。
很多人喜欢Go语言Google也对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎但重要的内存管理问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。
兄弟连教育区块链培训学院是由兄弟连教育携手微软区块链领域全球具价值尹成及其的清华水木未名教学团队所组成,学习周期为五个半月,内容涵盖Go语言、区块链密码学、分布式编程、共识算法、公链开发、智能合约与DAPP开发、区块链系统框架开发超级账本与区块链3.0EOS等内容,现在兄弟连Go语言培训就为大家讲解一下Go文件操作Go文件操作2:实战案例
导入依赖
import (
"fmt"
"io"
"os"
"io/ioutil"
)
文件拷贝1
func copyFile(srcFilename string,dstFilename string) {
bytes, _ := ioutil.ReadFile(srcFilename)
err := ioutil.WriteFile(dstFilename, bytes, 0754)
if err != nil {
fmt.Println("拷贝失败,err=", err)
} else {
fmt.Println("拷贝成功!")
}
}
func main51() {
copyFile("d:/找你妹.txt","d:/找自己.txt")
}
文件拷贝2
func main52() {
//打开来源文件和目标文件(目标文件可能并不存在)
srcFile, _ := os.OpenFile("d:/找你妹.txt", os.O_RDONLY, 0666)
dstFile, _ := os.OpenFile("d:/找我妹.txt", os.O_WRONLY|os.O_CREATE, 0666)
//程序的后关闭这两个文件
defer srcFile.Close()
defer dstFile.Close()
//使用标准库提供的API实现文件拷贝,返回的是拷贝的字节数
written, err := io.Copy(dstFile, srcFile)
if err!=nil{
fmt.Println("拷贝失败,err=",err)
}else{
fmt.Println("拷贝成功,字节数=",written)
}
}
实现文件字符数统计
func CountCharsOfFile(path string)map[string]int {
bytes, _ := ioutil.ReadFile(path)
str := string(bytes)
var numberCount,letterCount,spaceCount,othersCount int
//遍历字符串中的每个字符
for i,c := range str{
fmt.Printf("No%d,%c\n",i,c)
//逐个判断每个字符在字符集中的序号
switch {
case c >= '0' && c<='9':
numberCount++
case (c >= 'a' && c<='z') || (c >= 'A' && c<='Z'):
letterCount++
case c == ' ' || c=='\t':
spaceCount++
default:
othersCount++
}
}
return map[string]int{"数字":numberCount,"字母":letterCount,"空白":spaceCount,"其它":othersCount}
}func main() {
retMap := CountCharsOfFile("d:/temp/test.txt")
fmt.Println(retMap)
}
更多区块链视频教程/源码/课件/学习资料-企鹅QUN:591229276