File
文件对象,提供文件读写、定位等操作。
close
关闭文件并释放相关资源。
close()示例
标准的文件操作流程示例。
javascript
function main() {
let file = os.open("data.txt", "w")
file.write("Hello YouQuant!")
file.close() // 必须关闭文件
}参考
备注
使用完文件对象后必须调用此方法以释放系统资源。
puts
向文件写入一个或多个字符串。
puts(data1, data2, ...dataN)示例
向文件写入多个字符串。
javascript
function main() {
let file = os.open("output.txt", "w+")
let bytes = file.puts("Hello", " ", "World", "!")
Log("Bytes written:", bytes) // Bytes written: 12
file.seek(0, 0)
let data = file.read()
Log("data:", data) // If using os.open("output.txt", "w") may result in data being undefined
// data: Hello World!
// file.puts() // error: puts requires at least 1 argument at main
file.puts(", Hello YouQuant!")
file.seek(0, 0)
data = file.read()
Log("data:", data) // data: Hello World!, Hello YouQuant!
file.close()
}返回值
| 类型 | 描述 |
number | 返回实际写入的字节数。 |
参数
| 名称 | 类型 | 必填 | 描述 |
data | string | 是 | 要写入的字符串数据,可传入多个参数。 |
参考
备注
可一次写入多个字符串参数,将按顺序连接后写入。
printf
格式化写入数据到文件。
printf(format)
printf(format, arg1, arg2, ...argN)示例
格式化写入交易数据。
javascript
function main() {
let file = os.open("trade_log.txt", "w+")
let price = 100.25
let volume = 1000
let bytes = file.printf("Price: %.2f, Volume: %d\n", price, volume)
Log("Formatted bytes written:", bytes)
file.seek(0, 0)
let data = file.read()
Log("data:", data) // data: Price: 100.25, Volume: 1000
// file.printf("| Price: %.2f, Volume: %d\n") // "| Price: %!f(MISSING), Volume: %!d(MISSING)"
// file.seek(0, 0)
// data = file.read()
// Log("data:", data)
file.close()
}返回值
| 类型 | 描述 |
number | 返回实际写入的字节数。 |
参数
| 名称 | 类型 | 必填 | 描述 |
format | string | 是 | 格式化字符串。 |
args | any (平台支持的任意类型) | 否 | 格式化参数。 |
参考
flush
刷新文件缓冲区,确保数据立即写入磁盘。
flush()示例
实时写入关键日志数据。
javascript
function main() {
let logFile = os.open("critical.log", "a")
logFile.printf("[%s] Critical event occurred\n", new Date().toISOString()) // [2025-09-09T03:15:43.895Z] Critical event occurred
logFile.flush() // 立即刷新缓冲区并写入磁盘
// 继续其他操作...
logFile.close()
}参考
tell
获取文件指针的当前位置。
tell()示例
记录文件操作过程中的位置。
javascript
function main() {
let file = os.open("data.txt", "r+")
Log("Initial position:", file.tell()) // Initial position: 0
file.write("Hello")
Log("After write position:", file.tell()) // After write position: 5
file.close()
}返回值
| 类型 | 描述 |
number | 返回文件指针的当前位置(以字节为单位的偏移量)。 |
参考
备注
返回文件指针相对于文件起始位置的字节偏移量。
seek
将文件指针移动到指定位置。
seek(offset, whence)示例
倒序读取字符。
javascript
function main() {
let str = "Hello YouQuant!"
let file = os.open("data.txt", "w+")
file.write(str)
// If i > str.length: will throw InternalError: seek .../xxx/data.txt: invalid argument at main
for (let i = 1; i <= str.length; i++) {
file.seek(-i, 2)
let data = file.read(1)
Log("i:", i, ", data:", data)
}
file.close()
}返回值
| 类型 | 描述 |
number | 返回文件指针的新位置。 |
参数
| 名称 | 类型 | 必填 | 描述 |
offset | number | 是 | 偏移量(以字节为单位)。 |
whence | number | 是 | 基准位置:0=文件开头,1=当前位置,2=文件末尾。 |
参考
备注
用于定位文件指针,offset参数可以为负数(表示向前移动)。
eof
检查文件指针是否已到达文件末尾。
eof()示例
逐行读取文件直至结束。
javascript
function main() {
let file = os.open("data.txt", "r")
let lineCount = 0
while (!file.eof()) {
let line = file.getline()
if (line) {
lineCount++
Log("Line", lineCount + ":", line)
}
}
Log("Total lines:", lineCount)
file.close()
}返回值
| 类型 | 描述 |
bool | 如果已到达文件末尾返回true,否则返回false。 |
参考
备注
用于在读取文件时判断是否已读取完所有内容。
read
从文件中读取数据。
read()
read(size)示例
分块读取文件内容。
javascript
function main() {
let file = os.open("data.txt", "r")
// data.txt
// This is a test line: Line 1.
// This is a test line: Line 2.
// ...
let chunkSize = 29
let totalBytes = 0
while (!file.eof()) {
let chunk = file.read(chunkSize)
if (chunk) {
totalBytes += chunk.length || chunk.byteLength
Log("Read chunk, total bytes so far:", totalBytes, ", chunk:", chunk)
}
}
file.close()
}返回值
| 类型 | 描述 |
string / ArrayBuffer / undefined | 返回读取的内容。当到达文件末尾时返回 |
参数
| 名称 | 类型 | 必填 | 描述 |
size | number | 否 | 要读取的字节数。如果不指定,则读取文件中剩余的所有内容。 |
参考
备注
可以读取指定字节数的内容或文件中剩余的全部内容。返回类型可能是字符串或ArrayBuffer。
write
向文件写入字符串数据。
write(data)示例
写入交易记录
javascript
function main() {
let file = os.open("trades.log", "a")
let timestamp = new Date().toISOString()
let tradeInfo = `${timestamp},BUY,50000,1\n`
let bytes = file.write(tradeInfo)
Log("Trade record written, bytes:", bytes)
file.close()
}返回值
| 类型 | 描述 |
number | 返回实际写入的字节数。 |
参数
| 名称 | 类型 | 必填 | 描述 |
data | string | 是 | 要写入的字符串数据。 |
参考
备注
将字符串数据写入文件的当前位置。
getline
从文件中读取下一行内容。
getline()示例
逐行读取文件直至结束。
javascript
function main() {
let file = os.open("data.txt", "r")
let lineCount = 0
while (!file.eof()) {
let line = file.getline()
if (line) {
lineCount++
Log("Line", lineCount + ":", line)
}
}
Log("Total lines:", lineCount)
file.close()
}返回值
| 类型 | 描述 |
string / undefined | 返回下一行内容,到达文件末尾时返回 |
参考
备注
按行顺序读取文件内容。