《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.按行读取文件内 ...
随机推荐
- Linux常见的Shell命令
1.具体的shell命令用法可以通过help或man命令进入手册来查询其具体的用法.2.终端本质上对应着linux上的/dev/tty设备,linux的多用户登录就是通过不同的/dev/tty设备完成 ...
- Java Class类常用方法描述
一 生成Class对象的三种方式 1 Class.forName("全路径名") 2 类名.Class 3 实例对象.getClass() 接着看三种方式生成Class对象的区别 ...
- 螺旋矩阵II
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral ord ...
- @NotEmpty、@NotNull、@NotBlank注解解析
源码解析 @NotEmpty根据JDK源码注释说明,该注解只能应用于char可读序列(可简单理解为String对象),colleaction,map,array上,因为该注解要求的是对象不为null且 ...
- 【Android - 组件】之Activity生命周期的全面分析
Activity是Android四大组件之首,其重要性不言而喻,Activity的生命周期更是我们了解Android工作机制的重中之重.我们一般将Activty的生命周期做两种情况下的理解,即正常情况 ...
- 【Android - 控件】之V - DrawerLayout的使用
DrawerLayout是Android V4包中的一个布局控件,用来实现一个抽屉样式的布局. DrawerLayout通过设置子视图的layout_gravity来决定子视图停靠在屏幕的哪个边缘外侧 ...
- Android项目依赖库管理方式简介
在实际的android项目开发过程中,我们一般都会用一些现有的第三方库来实现我们的需求,避免重复造轮子.普遍使用到的,例如:网络请求库.图片处理库.界面UI库(自定义View.动画效果等).各种第三方 ...
- Linux权限基础
Linux权限基础 四种权限大类 基本权限 特殊权限 隐藏权限 file ACL权限 三种基本权限 r(read) 读是基本权限,没有读权限其他的一切操作都会被限制 读 4 w(write) 写 2 ...
- 管道符和作业控制、shell变量、环境变量配置文件 使用介绍
第6周第1次课(4月23日) 课程内容: 8.6 管道符和作业控制 8.7/8.8 shell变量8.9 环境变量配置文件扩展bashrc和bash_profile的区别 http://ask.ape ...
- springboot打印SQL及多环境配置
1-在控制台打印sql语句 在springBoot+Mybatis中,要想在控制台日志显示SQL的执行情况,简单设置即可:在properties新增: logging.level.com.anson. ...