write()和read()函数的用法

头文件:#include<unistd.h>

write()

函数定义

ssize_t write(int fd,const void*buf,size_t count);

参数说明:

fd:是文件描述符(write所对应的是写,即就是1) buf:通常是一个字符串,需要写入的字符串 count:是每次写入的字节数

返回值:

成功:返回写入的字节数 失败:返回-1并设置errno ps: 写常规文件时,write的返回值通常等于请求写的字节数count, 而向终端设备或者网络写时则不一定

 

read()

函数定义

ssize_t read(int fd,void*buf,size_t count)

参数说明:

fd: 是文件描述符 buf: 为读出数据的缓冲区; count: 为每次读取的字节数(是请求读取的字节数,读上来的数据保 存在缓冲区buf中,同时文件的当前读写位置向后移)

返回值:

成功:返回读出的字节数 失败:返回-1,并设置errno,如果在调用read 之前到达文件末尾,则这次read返回0

### 不同编程语言中 `write` `read` 函数的使用方法 #### C/C++ 中的 `write` `read` 在C/C++中,`write``read`是底层系统调用,通常用于直接与文件描述符交互。 ##### 使用示例: ```c #include <unistd.h> #include <fcntl.h> int main() { int fd = open("example.txt", O_WRONLY | O_CREAT, 0644); const char *message = "Hello world"; ssize_t bytes_written = write(fd, message, strlen(message)); // 将字符串写入文件 close(fd); return (bytes_written != -1) ? 0 : 1; } ``` 对于读取操作,则可以如下所示执行: ```c char buffer[256]; ssize_t bytesRead = read(fd, buffer, sizeof(buffer)-1); // 从文件读取数据到缓冲区 if(bytesRead > 0){ buffer[bytesRead]='\0';// Null terminate the string } ``` 上述代码展示了如何利用这两个函数来处理文件输入输出[^2]。 #### Python 中的 `write` `read` Python 提供了一个更高级别的接口来进行类似的文件I/O操作。这里展示的是基于内置`open()`函数的方式。 ##### 使用示例: ```python with open('example.txt', 'w') as f: f.write('Hello world\n') # 向文件中写入一行文本 ``` 要读取文件的内容,可采用下面的方法之一: ```python with open('example.txt', 'r') as file: content = file.read(10) # 读取指定数量字符 print(content) # 或者逐行读取整个文件 with open('example.txt', 'r') as file: lines = file.readlines() for line in lines: print(line.strip()) ``` 这些例子说明了Python里简单的文件读/写过程[^3]. #### Java 中的 `write` `read` Java提供了多种类库支持不同的流式APIs来做同样的事情。以下是使用FileInputStream/FileOutputStream的一个简单实例。 ##### 使用示例: ```java import java.io.*; public class Main { public static void main(String[] args)throws IOException{ String data="Some text to store"; try(FileOutputStream output=new FileOutputStream("example.txt")){ byte[] strToBytes=data.getBytes(); output.write(strToBytes); // 写入字节数组至文件 } StringBuilder sb=new StringBuilder(); try(FileInputStream input=new FileInputStream("example.txt")) { int c; while ((c=input.read())!=-1){ // 循环直到EOF(-1),每次读取单个字节 sb.append((char)c); } } catch(IOException e){ System.out.println(e.getMessage()); } System.out.println(sb.toString()); } } ``` 此段代码片段显示了怎样通过Java标准库完成基本的数据存储与检索功能[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值