WriteFile

WriteFile

目录[隐藏]

VB声明
说明
返回值
参数表
注解
VC声明
功能说明:
参数说明


VB声明

  Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long

说明

  将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理

返回值

  Long,TRUE(非零)表示成功,否则返回零。会设置GetLastError

参数表

  参数 类型及说明
  hFile Long,一个文件的句柄
  lpBuffer Any,要写入的一个数据缓冲区
  nNumberOfBytesToWrite Long,要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内
  lpNumberOfBytesWritten Long,实际写入文件的字节数量
  lpOverlapped OVERLAPPED,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByVal As Long,并传递零值)

注解

  并不是每种操作系统都支持在任何类型的设备上进行异步操作。windows 95不支持对磁盘文件的重叠读取操作

VC声明

  BOOL WriteFile(
  HANDLE hFile, // 文件句柄
  LPCVOID lpBuffer, // 数据缓存区指针
  DWORD nNumberOfBytesToWrite, // 你要写的字节数
  LPDWORD lpNumberOfBytesWritten, // 用于保存实际写入字节数的存储区域的指针
  LPOVERLAPPED lpOverlapped // OVERLAPPED结构体指针
  );

功能说明:

  从文件指针指向的位置开始将数据写入到一个文件中, 且支持同步和异步操作,
  如果文件打开方式没有指明FILE_FLAG_OVERLAPPED的话,当程序调用成功时,它将实际写入文件的字节数保存到lpNumberOfBytesWriten指明的地址空间中
  如果文件要交互使用的话,当函数调用完毕时要记得调整文件指针

参数说明

  HANDLE hFile, 需要写入数据的文件指针,这个指针指向的文件必须是GENERIC_WRITE access 访问属性的文件
  LPOVERLAPPED lpOverlapped OVERLAPPED结构体指针,如果文件是以FILE_FLAG_OVERLAPPED方式打开的话,那么这个指针就不能为NULL

返回值

  调用成功,返回非0
  调用不成功,返回为0
### WriteFile 方法使用说明 `WriteFile` 是 Node.js 中 `fs` 模块的一个异步方法,用于将数据写入指定的文件。如果目标文件不存在,则会自动创建;如果文件已存在,则默认情况下会覆盖原有内容。 以下是关于 `WriteFile` 的具体说明以及示例代码: #### 参数列表 - **file**: 文件路径或文件描述符(字符串 | Buffer | URL | number),表示要写入的目标文件。 - **data**: 要写入的内容(string 或 buffer)。如果是 string 类型,默认编码为 UTF-8[^5]。 - **options**: 可选参数对象,支持以下属性: - **encoding**: 默认值为 `'utf8'`,可以设置其他字符集如 `'ascii'` 或 `'base64'`。 - **mode**: 设置文件权限,默认值为 `0o666`。 - **flag**: 打开文件时使用的标志位,默认为 `'w'` 表示覆写模式。可改为 `'a'` 追加模式或其他选项[^2]。 - **callback**: 完成操作后的回调函数,接收两个参数 `(err)` 和无返回值的结果。 #### 返回值 此方法本身不返回任何值,而是通过回调函数通知完成状态。 --- ### 示例代码 以下展示了如何利用 `WriteFile` 方法向 CSV 文件中写入数据: ```javascript const fs = require('fs'); // 数据数组 const data = [ ['Name', 'Age', 'City'], ['John Doe', 28, 'New York'], ['Jane Smith', 32, 'Los Angeles'] ]; // 将二维数组转换为 CSV 格式的字符串 function arrayToCsv(data) { return data.map(row => row.join(',')).join('\n'); } // 写入 CSV 文件 fs.writeFile('people.csv', arrayToCsv(data), { encoding: 'utf8', flag: 'w' }, (err) => { if (err) { console.error('Error writing file:', err); } else { console.log('CSV file has been successfully written.'); } }); ``` 上述代码实现了如下功能: 1. 构造了一个二维数组作为待写入的数据源。 2. 利用自定义函数 `arrayToCsv()` 将其转化为标准的 CSV 字符串形式。 3. 使用 `fs.writeFile` 方法将生成的 CSV 文本保存至名为 `people.csv` 的文件中,并指定了编码方式和写入模式。 注意,在实际应用过程中可以根据需求调整 flags 值以改变行为逻辑,比如采用追加模式而非完全替换旧有记录。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guchuanlong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值