《Hands-On System Programming with Go》之读文件
有点全,但不是很全。
一次读入,分批次读入,缓存读入。
要记得这几种不同读取的应用场景。
package main
import (
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"os"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Please specify a path.")
return
}
b1, err := ioutil.ReadFile(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
fmt.Println(string(b1))
f1, err := os.Open(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
defer f1.Close()
var (
b2 = make([]byte, 16)
)
for n := 0; err == nil; {
n, err = f1.Read(b2)
if err == nil {
fmt.Print(string(b2[:n]))
}
}
for err != nil && err != io.EOF {
fmt.Println("\n\nError: ", err)
}
var b3 = bytes.NewBuffer(make([]byte, 26))
var texts = []string{
`As he came into the window`,
`It was the sound of a crescendo
He came into her apartment`,
`He left the bloodstains on the carpet`,
`She ran underneath the table
He could see she was unable
So she ran into the bedroom
She was struck down, it was her doom`,
}
for i := range texts {
b3.Reset()
b3.WriteString(texts[i])
fmt.Println("Length: ", b3.Len(), "\tCapacity: ", b3.Cap())
}
f2, err := os.Open(os.Args[1])
if err != nil {
fmt.Println("Error: ", err)
}
defer f2.Close()
r := bufio.NewReader(f2)
var rowCount int
for err == nil {
var b4 []byte
for moar := true; err == nil && moar; {
b4, moar, err = r.ReadLine()
if err == nil {
fmt.Print(string(b4))
}
}
if err == nil {
fmt.Println()
rowCount++
}
}
if err != nil && err != io.EOF {
fmt.Println("\nError: ", err)
return
}
fmt.Println("\nRow count: ", rowCount)
}

《Hands-On System Programming with Go》之读文件的更多相关文章
- Linux System Programming 学习笔记(二) 文件I/O
1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情 ...
- 《Hands-On System Programming with Go》之目录操作
开一个新书<Hands-On System Programming with Go>,系统的了解一下, 这方面的东东,以前用C语言实现过, 现在用GO,重新来!! package main ...
- Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)
控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...
- java 读文件 解析
[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** ...
- DeviceIoControl 直接从磁盘扇区读文件
好久没写博客了,近期看了下DeviceIoControl 关于磁盘的应用,特记一文,以备久后查阅. 首先介绍下,文件在磁盘的存储结构(详细能够到网上查询NTFS文件系统相关的教程后者数据恢复方面教程 ...
- Java多种方式读文件,追加文件内容,等对文件的各种操作
一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 import java.io.BufferedReader; import jav ...
- 【练习】Java中的读文件,文件的创建,写文件
前言 大家好,给大家带来Java中的读文件,文件的创建,写文件的概述,希望你们喜欢 读文件 public static void read(String path,String filename){ ...
- Java读文件
public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...
- Hadoop源码分析之读文件时NameNode和DataNode的处理过程
转自: http://blog.csdn.net/workformywork/article/details/21783861 从NameNode节点获取数据块所在节点等信息 客户端在和数据节点建立流 ...
- java中多种方式读文件
转自:http://www.jb51.net/article/16396.htm java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内 ...
随机推荐
- 华为USG防火墙nat环回配置
网络环境介绍: 公司内网有一台web服务器,地址是192.168.100.100,web服务端口为80,并且为这台web服务器申请了DNS A记录的域名解析服务,解析记录是公司出口ip地址100.10 ...
- NSSearchPathForDirectoriesInDomains用法
iPhone会为每一个应用程序生成一个私有目录,这个目录位于: /Users/sundfsun2009/Library/Application Support/iPhone Simulator/Use ...
- LVS+Keepalived-DR模式(Apache)
Environment:4台CentOS机器 两台LVS 两台web服务器 LVS主备的操作,都需要安装ipvsadm和keepalived LVS主机操作 : 1.更改Keepalived的配置文件 ...
- Python装饰器总结,带你几步跨越此坑!
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- Apache服务——个人用户主页功能
使用Apache服务部署静态网站(二) 个人用户主页功能 Apache服务程序中有个默认未开启的个人用户主页功能,能够为所有系统内的用户生成个人网站,确实很实用哦~ 第1步:开启个人用户主页功能: [ ...
- React-Native项目在Android真机上调试
目录 1.确保你的设备已经成功连接.可以终端输入adb devices来查看: 2.终端运行npm start 开启本地服务,成功后运行react-native run-android来在设备上安装并 ...
- CF296C Greg and Array 查分数组
题目链接:http://codeforces.com/problemset/problem/296/C 题意:给你n.m.k,表示n个数a[i],m个对数的操作,k个对操作的操作.m个操作:数a[l] ...
- windows上安装和使用ab压测工具
ApacheBench是一款压力测试工具,用于测试http服务器请求的性能情况. 官方下载链接:https://www.apachehaus.com/cgi-bin/download.plx 百度云: ...
- ES6语法中的class、extends与super的原理
class 首先, 在JavaScript中, class类是一种函数 class User { constructor(name) { this.name = name; } sayHi ...
- 国内下载vscode速度慢解决
找到对应的文件,点击下载,会出现一个类似下面的链接: https://az764295.vo.msecnd.net/stable/f06011ac164ae4dc8e753a3fe7f9549844d ...