c++ ifstream读取文件_Go语言入门必知教程-文件与目录

os包是操作文件和目录的包。

io的接口Reader,用于从数据源中读取数据并将数据转换成字节流,Writer接口字节流中读取数据,并将数据作为输出写入目标数据源。

创建空文件

36ab5091acaba61b5f95d07f7e8f09a3.png

结果:

C:golangworking-with-files>go fmt example1.go

C:golangworking-with-files>golint example1.go

C:golangworking-with-files>go run example1.go

2018/08/11 15:46:04 &{0xc042060780}

C:golangworking-with-files>

如果目录不存在则创建

e557bb85d6e58197c5eea4414ed66918.png

重命名文件

f8f5d1c39db9247af16502227df14890.png

结果:

C:golangworking-with-files>go fmt example.go

C:golangworking-with-files>golint example.go

C:golangworking-with-files>go run example.go

C:golangworking-with-files>

移动文件

os.Rename()可以用来移动并重命名文件

bf6d939305d53a08ed8776cf833092c8.png

复制文件

f0e2dd0192887a7b9f6d96aa5a9659c8.png

结果:

[root@server src]# clear

[root@server src]# go run example6.go

2018/08/15 03:43:39 Copied 100 bytes.

[root@server src]#

获取文件信息

8e06ddedf42630dffc138e078290bfbe.png

结果:

C:golangworking-with-files>go fmt example.go

example.go

C:golangworking-with-files>golint example.go

C:golangworking-with-files>go run example.go

File Name: test.txt

Size: 100

Permissions: -rw-rw-rw-

Last Modified: 2018-08-11 20:19:14.2671925 +0530 IST

Is Directory: false

C:golangworking-with-files>

删除文件

bc5f702d84363d159a1035bd39377f02.png

按字符读取文件内容

e675b2443fc089a16568f91478fcf684.png

截断文件大小

os.Truncate()用于截断文件到N个字节,N由第二个参数指定。 以下的例子显示文件1Kb(100 byte)之后的内容被截去。

eee675ef0028c42bb61d2991f4769777.png

结果:

C:golangworking-with-files>go fmt example10.go

C:golangworking-with-files>golint example10.go

C:golangworking-with-files>go run example10.go

C:golangworking-with-files>

添加内容到文件末尾

9f68367dc64fe45ac32a7774d76c12e6.png

更改文件权限、所有权和时间戳

a4dcfabad716afe2aa70d3f78f491e2d.png

压缩多个文件到Zip压缩包

f59c3791059f934ef09426715f465661.png

从Zip压缩包读取文件列表

eddb4b4b455d1162d9e707db32425637.png

解压Zip压缩包

9a32d675cc9497f387e6f4ef85ad6131.png
### C++ 使用 `ifstream` 读取文件内容 在 C++ 中,可以利用 `<fstream>` 库中的 `std::ifstream` 类来打开并读取文件的内容。下面展示几种常见的方法。 #### 方法一:逐字符读取 通过循环调用 `get()` 函数可以从输入流中每次获取单个字符直到遇到文件结束符 EOF (End Of File)。 ```cpp #include <iostream> #include <fstream> int main() { char ch; std::ifstream infile("example.txt"); while (infile.get(ch)) { // 当未到达EOF时继续执行 std::cout << ch; // 输出到控制台 } infile.close(); } ``` 这种方法适用于处理较小规模的数据或者当只需要按顺序访问每一个单独字符的情况[^1]。 #### 方法二:整行读取 如果希望一次读入一行数据,则可采用 getline() 函数配合字符串变量一起工作: ```cpp #include <iostream> #include <string> #include <fstream> int main(){ std::string line; std::ifstream infile("example.txt"); while(std::getline(infile, line)){ std::cout << line << '\n'; } infile.close(); } ``` 此方式适合于文本文件,并且能够保留每一行之间的分隔信息[^2]。 #### 方法三:整体读取至缓冲区 对于已大小的文件或者是想要一次性加载整个文件的情形下,可以直接将其全部内容复制到内存中的某个区域里去: ```cpp #include <iostream> #include <vector> #include <fstream> #include <iterator> int main(){ std::ifstream infile("example.txt", std::ios::binary | std::ios::ate); std::streamsize size = infile.tellg(); infile.seekg(0, std::ios::beg); std::vector<char> buffer(size); if (infile.read(buffer.data(), size)) std::cout.write(buffer.data(), size); infile.close(); } ``` 上述代码片段展示了如何以二进制模式 (`std::ios::binary`) 打开文件并将指针定位到最后(`std::ios::ate`) 来计算文件长度;之后再回到起始位置(`seekg`) 并分配适当的空间用于存储文件的所有字节[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值