在进行文件操作的时候需要导包import std.fs.*一、Path类package Study import std.fs.* main() { // 目录路径 let path1 Path(C:\\Users\\ultra\\Desktop\\仓颉视频) println(path1) // 文件路径 let path2 Path(C:/Users/ultra/Desktop/仓颉视频/1.1 仓颉环境搭建及Hello World.mp4) println(path2) // 相对路径 let path3 Path(./src) println(path3) let path4 Path(./src/main.cj) println(path4) }path类的成员package Study import std.fs.* main() { // 目录路径 let path1 Path(C:\\Users\\ultra\\Desktop) println(path1) // 相对路径 let path2 Path(./src/main.cj) println(path2) println() // 成员变量 // 获取路径文件名含后缀或最后一级目录 println(path1.fileName) println(path2.fileName) // 获取路径文件名不含后缀或最后一级目录 println(path1.fileNameWithoutExtension) println(path2.fileNameWithoutExtension) // 获取文件后缀 println(path2.extensionName) println() // 成员函数 // 判断是否是绝对路径 println(path1.isAbsolute()) println(path2.isAbsolute()) // 判断是否是相对路径 println(path1.isRelative()) println(path2.isRelative()) // 判断是否是目录 println(FileInfo(path1).isDirectory()) println(FileInfo(path2).isDirectory()) // 判断是否是文件 println(FileInfo(path1).isRegular()) println(FileInfo(path2).isRegular()) // 判断是否是软连接 println(FileInfo(path1).isSymbolicLink()) println(FileInfo(path2).isSymbolicLink()) }路径拼接package Study import std.fs.* main() { var path1 Path(./src) var fileStr main.cj // path1是字符串类型 path1 path1.join(fileStr) println(path1) println() var path2 Path(./src) var filePath Path(main.cj) // path2是Path类型 path2 path2.join(filePath) println(path2) }二、Directory类创建和删除package Study import std.fs.* main() { var path1 Path(./src) var newDir1 dir1 path1 path1.join(newDir1) try { // 非递归创建 Directory.create(path1) } catch (_: FSException) { println(创建失败) } var path2 Path(./src) var newDir2 dir2 path2 path2.join(newDir2) try { // 递归创建 Directory.create(path2, recursive: true) } catch (_: FSException) { println(创建失败) } println(创建完成) try { // 非递归删除 // 判断路径是否存在 if (exists(path1)) { remove(path1) } } catch (_: FSException) { println(删除失败) } try { // 递归删除 // 判断路径是否存在 if (exists(path2)) { remove(path2, recursive: true) } } catch (_: FSException) { println(删除失败) } println(删除完成) }复制和剪切在dir1、dir2目录下分别新建一个dir1.txt、dir2.txt文件里面分别输入“dir1文件”和“dir2文件”的字样。复制dir2目录在scr目录下为dir2_copy剪切dir2目录到dir1目录下package Study import std.fs.* main() { let path1 Path(./src/dir1) let path2 Path(./src/dir2) // 复制dir2的文件路径 let path3 Path(./src/dir2_copy) // 剪切dir2的文件路径 let path4 Path(./src/dir1/dir2) // // 复制 try { if (!exists(path3)) { copy(path2, to: path3, overwrite: false) } } catch (_: FSException) { println(复制失败) } println(复制完成) // 剪切移动 try { if (!exists(path4)) { copy(path2, to: path4, overwrite: true) } } catch (_: FSException) { println(剪切失败) } println(剪切完成) }创建子目录和文件在dir2_copy目录下创建dir3目录并dir2_copy目录下创建dir2_copy.txt文件package Study import std.fs.* main() { let path Path(./src/dir2_copy) if (exists(path)) { // 创建dir3目录 Directory.create(path.toString() /dir3) Directory.create(path.toString() dir2_copy.txt) } println(创建完成) }遍历目录的子目录package Study import std.fs.* main() { let path ./src/dir1 let curDir Directory.create(path) // 遍历当前目录下的子目录和文件不含子目录中的文件 for (item in Directory.readFrom(path)) { println(${item.path}) } }三、File类创建和删除在src目录下dir2_copy目录下的dir3目录下创建文件dir3.txtpackage Study import std.fs.* main() { let path Path(./src/dir2_copy/dir3/dir3.txt) // 创建文件 if (!exists(path)) { let file File.create(path) if (!file.isClosed()) { file.close() println(文件关闭) } println(创建成功) } println() // 删除文件 try { remove(path) } catch (_: FSException) { println(删除失败) } println(删除成功) }复制和移动在src目录下dir2_copy目录下的dir3目录下复制dir3.txt为dir3_copy.txt将dir3.txt移动到src目录下package Study import std.fs.* main() { let path1 Path(./src/dir2_copy/dir3/dir3.txt) let path2 Path(./src/dir2_copy/dir3/dir3_copy.txt) // 复制 try { copy(path1, to: path2, overwrite: false) println(复制成功) } catch (_) { println(复制失败) } println() // 移动 try { copy(path1, to: Path(./src/dir3.txt), overwrite: true) println(移动成功) } catch (_) { println(移动失败) } }四、FileInfo类通过Directory类的成员info可以获得目录的信息通过File类的成员info可以获得文件的信息。package Study import std.fs.* main() { let fileInfo FileInfo(./src/dir1) println(目录: ${fileInfo.isDirectory()}) println(软链接: ${fileInfo.isSymbolicLink()}) println(文件: ${!fileInfo.isDirectory()}) println(创建时间: ${fileInfo.creationTime}) println(最后访问时间: ${fileInfo.lastAccessTime}) println(最后修改时间: ${fileInfo.lastModificationTime}) if (let Some(fileInfo) - fileInfo.parentDirectory) { println(父级目录路径: ${fileInfo.path}) } }五、小结本章为大家详细的介绍了仓颉编程语言中文件操作的内容下一章为大家带来基本输入输出流的内容。最后创作不易如果大家觉得我的文章对学习仓颉服务端开发有帮助的话就动动小手点个免费的赞吧收到的赞越多我的创作动力也会越大哦谢谢大家