File 示例

File 常规操作:创建、删除、读写、关闭

代码如下:

import std.fs.* import std.io.* main() { let filePath: Path = Path("./tempFile.txt") if (exists(filePath)) { remove(filePath) } /* 在当前目录以 只写模式 创建新文件 'tempFile.txt',写入三遍 "123456789\n" 并关闭文件 */ var file: File = File(filePath, OpenOption.Create(false)) if (exists(filePath)) { println("The file 'tempFile.txt' is created successfully in current directory.\n") } let bytes: Array<Byte> = "123456789\n".toArray() for (_ in 0..3) { file.write(bytes) } file.close() /* 以 追加模式 打开文件 './tempFile.txt',写入 "abcdefghi\n" 并关闭文件 */ file = File(filePath, OpenOption.Append) file.write("abcdefghi\n".toArray()) file.close() /* 以 只读模式 打开文件 './tempFile.txt',按要求读出数据并关闭文件 */ file = File(filePath, OpenOption.Open(true, false)) let bytesBuf: Array<Byte> = Array<Byte>(10, repeat: 0) // 从文件头开始的第 10 个字节后开始读出 10 个字节的数据 file.seek(SeekPosition.Begin(10)) file.read(bytesBuf) println("Data of the 10th byte after the 10th byte: ${String.fromUtf8(bytesBuf)}") // 读出文件尾的 10 个字节的数据 file.seek(SeekPosition.End(-10)) file.read(bytesBuf) println("Data of the last 10 bytes: ${String.fromUtf8(bytesBuf)}") file.close() /* 以 截断模式 打开文件 './tempFile.txt',写入 "The file was truncated to an empty file!" 并关闭文件 */ file = File(filePath, OpenOption.Truncate(true)) file.write("The file was truncated to an empty file!".toArray()) file.seek(SeekPosition.Begin(0)) let allBytes: Array<Byte> = readToEnd(file) file.close() println("Data written newly: ${String.fromUtf8(allBytes)}") remove(filePath) return 0 }

运行结果如下:

The file 'tempFile.txt' is created successfully in current directory. Data of the 10th byte after the 10th byte: 123456789 Data of the last 10 bytes: abcdefghi Data written newly: The file was truncated to an empty file!

File 的一些 static 函数演示

代码如下:

import std.fs.* main() { let filePath: Path = Path("./tempFile.txt") if (exists(filePath)) { remove(filePath) } /* 以 只写模式 创建文件,并写入 "123456789\n" 并关闭文件 */ var file: File = File.create(filePath) file.write("123456789\n".toArray()) file.close() /* 以 追加模式 写入 "abcdefghi\n" 到文件 */ File.writeTo(filePath, "abcdefghi".toArray(), openOption: OpenOption.Append) /* 直接读取文件中所有数据 */ let allBytes: Array<Byte> = File.readFrom(filePath) println(String.fromUtf8(allBytes)) remove(filePath) return 0 }

运行结果如下:

123456789 abcdefghi