10. 文件的读写

10.1 文本文件

操作文件三大类:

  • ofstream:写操作
  • ifstream:读操作
  • fstream:读写操作
打开方式解释
ios::in为了读文件而打开文件
ios::out为了写文件而打开文件,如果当前文件存在则清空当前文件在写入
ios::app追加方式写文件
ios::trunc如果文件存在先删除,在创建
ios::ate打开文件之后令读写位置移至文件尾端
ios::binary二进制方式

文件打开方式可以配合使用,利用|操作符
例如:利用二进制方式写文件,ios::binary|ios::out

10.1.1 写文件

  • 普通写文件
#include<fstream> // 文件头
ofstream ofs;// 创建流对象
ofs.open("path",打开方式);
ofs<<"写入数据"<<endl;
ofs.close();// 关闭文件
  • 二进制写文件
#include<fstream> // 文件头
ofstream ofs;// 创建流对象
ofs.open("path",ios::out|ios::binary);
Person p={"张三",18};
ofs.write((const char *)&p,sizeof(Person));//Person 自定义类
ofs.close();// 关闭文件

10.1.2 读文件

  • 普通读文件
#include<fstream> // 文件头
ifstream ifs;// 创建流对象
ifs.open("path",打开方式);
if(!ifs.open()){
	cout<<文件打开失败!<<endl;
	return
}
// 四种读取方法
// 第一种方法
//char buf[1024]={0};
//while(ifs>>buf){
	//cout<<buf<<endl;
//}
// 第二种方法
//char buf[1024]={0};
//while(ifs.getline(buf,size(buf))){
	//cout<<buf<<endl;
//}
// 第三种方法
//string buf;
//while(getline(ifsbuf){
	//cout<<buf<<endl;
//}

// 第四种方法,比较少用
//char c;
//while((c=ifs.get())!EOF){
	//cout<<c<<endl;
//}
ifs.close()
  • 二进制读文件
#include<fstream> // 文件头
ofstream ofs;// 创建流对象
ofs.open("path",ios::int|ios::binary);
Person p={"张三",18};
if(!ifs.open()){
	cout<<文件打开失败!<<endl;
	return
}
ofs.read((const char *)&p,sizeof(Person));//Person 自定义类
cout<<p.name<<":"<<p.age<<endl;
ofs.close();// 关闭文件
`kotlin.use` 并不是 Kotlin 用于读写文件的操作符或者特定函数。可能是你在提问时打错了字,想要查询的是 Kotlin 中如何读写文件。 Kotlin 提供了几种便捷的方式来处理文件操作: ### 读取文件内容 #### 使用 `readText()` 或者 `readLines()` 对于文本文件,你可以使用 `FileInputStream` 的 `reader()` 方法配合 `BufferedReader` 来逐行读取文件,但是 Kotlin 提供了更简洁的方式: ```kotlin val content = File("path/to/file.txt").readText() ``` 这个表达式会直接将文件的内容作为字符串读入。如果你需要每行数据作为一个单独的元素存储到列表中,可以使用: ```kotlin val lines = File("path/to/file.txt").readLines() ``` 这里返回的 `lines` 列表包含了文件中的每一行。 ### 写入文件内容 创建新文件并写入内容,可以通过 `FileWriter` 类完成: ```kotlin val writer = FileWriter("newfile.txt") writer.write("Hello, World!") writer.close() ``` 如果你想一次性写入多行,可以这样做: ```kotlin val writer = FileWriter("newfile.txt") for (line in listOf("First line", "Second line")) { writer.append(line) } writer.close() ``` 这里使用了 `append()` 方法追加新的行而不换行。 ### 自动管理资源 为了更好地处理文件流的关闭工作,并避免内存泄漏,通常会使用 `use` 函数: ```kotlin val fileContent = File("path/to/file.txt").use { it.readText() } ``` 或者对于写操作: ```kotlin val writer = File("path/to/newfile.txt").use { it.newWriter() } { writer -> writer.write("This is a test.") } ``` 这里的 `use` 函数会自动关闭文件流,确保资源得到合理利用。 ### 相关问题: 1. Kotlin 中还有哪些其他方式读写文件? 2. 在进行文件操作时需要注意哪些常见的错误和异常? 3. 怎么样优化读写文件的性能?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值