Functions.FReadText 方法 | |
从文件中读取字符到通过引用传递的缓冲区变量中。
命名空间:
XSharp.Core
程序集:
XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法 FUNCTION FReadText(
ptrHandle AS IntPtr,
cBufferVar REF STRING,
dwBytes AS DWORD
) AS DWORD
public static uint FReadText(
IntPtr ptrHandle,
ref string cBufferVar,
uint dwBytes
)
查看代码参数
- ptrHandle
- 类型:IntPtr
要读取的文件句柄。 - cBufferVar
- 类型:String
用于存储从指定文件读取的数据的变量。
如果 cBufferVar 的长度小于 dwBytes,则分配一个新字符串,其长度为 dwBytes 和文件中剩余字节数的最小值。cBufferVar 必须通过引用传递,因此必须加上通过引用传递的操作符 (@)。
- dwBytes
- 类型:UInt32
要读入缓冲区的字节数。
返回值
类型:
UInt32
成功读取的字节数。
返回值小于
dwBytes 或为 0 表示已到达文件末尾或发生其他读取错误。可以使用 FError() 确定具体错误。
备注
FReadText() 与 FRead() 相同,只是在 SetAnsi() 为 FALSE 时会进行 OEM 到 ANSI 的转换。
备注 提示: |
---|
X# 运行时中的低级文件 IO 函数在后台使用 .Net 文件流。
这意味着 FOpen() 和 FCreate() 返回的文件句柄不是'正常'的文件句柄,而是用于在运行时的流集合中找到底层流对象的唯一标识符。
这也意味着你不能使用 FRead() 和 FWrite() 这样的函数,这些函数不是在 X# 运行时中创建的文件句柄。
如果你想访问底层的 FileStream,你应该调用函数 FGetStream(IntPtr) |
示例
此示例在成功打开文件后使用 FRead() 将 128 个字节读入缓冲区:
1DEFINE F_BLOCK := 128
2...
3cBuffer := Space(F_BLOCK)
4ptrHandle := FOpen("temp.txt")
5IF FError() != 0
6 ? DOSErrString(FError())
7ELSE
8 IF FReadText(ptrHandle, @cBuffer, F_BLOCK) <paramref name="" /> F_BLOCK
9 ? DOSErrString(FError())
10 ENDIF
11 FClose(ptrHandle)
12ENDIF
参见