点击或拖拽改变大小

Functions.FWrite 方法 (IntPtr, String, UInt32)

X#
将字符串写入打开的文件。

命名空间:  XSharp.Core
程序集:  XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法
 FUNCTION FWrite(
	ptrHandle AS IntPtr,
	cBuffer AS STRING,
	nBytes AS DWORD
) AS DWORD
查看代码

参数

ptrHandle
类型:IntPtr
要写入的文件句柄。
cBuffer
类型:String
要写入的字符串。
nBytes
类型:UInt32
从当前文件指针位置开始,要写入 cBuffer 的字节数。
如果省略,则写入 cBuffer 的整个内容。

返回值

类型:UInt32
写入的字节数。
如果返回值等于 nBytes,则操作成功。
如果返回值小于 nBytes 或为 0,则表示 cBuffer 的长度小于 nBytes,或磁盘已满,或发生了其他错误。可以使用 FError() 确定具体错误。当发生磁盘满错误时,FError() 设置为 256。 FWrite() 和 FWrite3 假定处理原始二进制数据,不依赖于 SetAnsi() 的状态。相反,FWriteText() 和 FWrite4() 依赖于 SetAnsi()。
备注
备注
提示 提示:
X# 运行时中的低级文件 IO 函数在后台使用 .Net 文件流。
这意味着 FOpen() 和 FCreate() 返回的文件句柄不是'正常'的文件句柄,而是用于在运行时的流集合中找到底层流对象的唯一标识符。 这也意味着你不能使用 FRead() 和 FWrite() 这样的函数,这些函数不是在 X# 运行时中创建的文件句柄。
如果你想访问底层的 FileStream,你应该调用函数 FGetStream(IntPtr)
示例
此示例将一个文件的内容复制到另一个文件:
X#
 1DEFINE F_BLOCK := 512
 2...
 3cBuffer := Space(F_BLOCK)
 4nInfile := FOpen2("temp.txt", FO_READ)
 5nOutfile := FCreate("newfile.txt", FC_NORMAL)
 6lDone := FALSE
 7DO WHILE !lDone
 8    nBytesRead := FRead(nInfile, @cBuffer,;
 9    F_BLOCK)
10    IF FWrite(nOutfile, cBuffer) < SLen(cBuffer)
11        ? DOSErrString(FError())
12        lDone := TRUE
13    ELSE
14        lDone := (nBytesRead = 0)
15    ENDIF
16ENDDO
17FClose(nInfile)
18FClose(nOutfile)
参见