当前位置: 首页 > news >正文

Kotlin文件

文件层级结构

为了在磁盘上更好地组织数据,可以将文件安排在目录中。一个父目录可以包含其他目录(称为子目录),从而形成一个文件层级结构

例如,在 Linux 的文件系统中,根目录 / 包含了所有其他的文件和目录,即使它们存储在不同的物理设备上。

⚠️ 说明:为了简洁清晰,本文未涉及空安全(null safety)相关内容。


文件与目录的基本概念

  • 文件:是存储介质上的一个命名数据单元,是操作系统中数据交互的基本单位。

  • 目录:是一种特殊的文件,用于组织其他文件。在一个典型的文件系统中,可能包含大量文件,使用目录有助于更高效地管理它们。

在 Kotlin 中,我们可以使用 java.io 包中的 File 类来操作文件和目录。


常用方法简介

方法名作用说明
File.isDirectory判断是否为目录
File.isFile判断是否为普通文件
File.exists()检查文件是否存在
File.resolve(name)在当前目录中解析得到一个新文件对象
File.createNewFile()创建一个新文件
File.mkdir()创建一个新目录

示例代码说明:

val outDir = File("outDir")
println(outDir.exists())    // false
outDir.mkdir()
println(outDir.exists())    // true
println(outDir.isDirectory) // trueval file = outDir.resolve("newFile.txt") // 等同于 outDir/newFile.txt
println(file.exists())      // false
file.createNewFile()        
println(file.exists())      // true
println(file.isFile)        // true
  • 创建一个目录 outDir

  • 在其中创建一个新文件 newFile.txt

  • 使用 exists()isDirectory()isFile() 方法检查文件系统状态

遍历文件层级结构

java.io.File 中的方法:
方法名说明
getParentFile()获取父目录对应的 File 对象
getParent()获取父目录的路径字符串
listFiles()获取当前目录下的所有文件(返回数组)
list()获取文件名列表(字符串数组)
kotlin.io 提供的增强方法:
  • File.walk(direction):返回一个 FileTreeWalk 对象,可遍历目录和文件

  • File.walkTopDown():先访问目录,再访问文件(深度优先)

  • File.walkBottomUp():先访问文件,再访问目录(深度优先)

val fileTree = File("myDir").walkTopDown()
for (file in fileTree) {println(file.name)
}

Path(路径)操作

kotlin.io.path 扩展了对 java.nio.file.Path 的支持,允许我们更方便地进行文件和目录操作。

常用方法
方法名说明
listDirectoryEntries()列出目录中的文件
copyTo()拷贝文件到目标位置
moveTo()移动文件到新位置
writeText()写入文本内容到文件
readText()读取完整文件为字符串
readLines()将文件按行读取为字符串集合
walk()遍历所有子目录和文件
copyToRecursively()递归复制整个目录及其内容到新位置

示例代码说明

fun main() {val sourcePath = Path("sourceDir/file.txt")val destinationPath = Path("destDir/file.txt")val filesInDir = Path("sourceDir").listDirectoryEntries()println("Files in sourceDir: $filesInDir")sourcePath.copyTo(destinationPath, overwrite = true)println("File copied from sourceDir to destDir.")val movedPath = destinationPath.moveTo(Paths.get("destDir/movedFile.txt"), overwrite = true)println("File moved to: $movedPath")movedPath.writeText("Hello, world!")println("Text written to file.")val text = movedPath.readText()println("Text read from file: $text")val lines = movedPath.readLines()println("Lines read from file: $lines")val walkedPaths = Path("destDir").walk().toList()println("Walked paths: $walkedPaths")Path("sourceDir").copyToRecursively(target = Paths.get("copyDir"),overwrite = true,followLinks = true,)println("Directory copied recursively.")
}

输出说明:

Files in sourceDir: [列出 sourceDir 中的文件]
File copied from sourceDir to destDir.
File moved to: destDir/movedFile.txt
Text written to file.
Text read from file: Hello, world!
Lines read from file: [Hello, world!]
Walked paths: [destDir, destDir/movedFile.txt]
Directory copied recursively.

总结

熟练掌握 Kotlin 中的文件层级结构处理对于开发者来说是非常重要的技能。它能显著提升你管理数据、组织文件的能力,也让应用程序的文件交互更高效、更健壮。


http://www.lryc.cn/news/586466.html

相关文章:

  • AI大模型(七)Langchain核心模块与实战(二)
  • Java SE--抽象类和接口
  • Linux系统编程——目录 IO
  • JavaScript:移动端特效--从触屏事件到本地存储
  • 一文理解缓存的本质:分层架构、原理对比与实战精粹
  • 深入理解设计模式之工厂模式:创建对象的艺术
  • Cypress与多语言后端集成指南
  • 数据结构——散列表
  • 为什么有些PDF无法复制文字?原理分析与解决方案
  • Cursor创建Spring Boot项目
  • 指令微调时,也要考虑提示损失
  • 《Java Web程序设计》实验报告六 JSP+JDBC+MySQL实现登录注册
  • 多表查询-4-外连接
  • xml映射文件的方式操作mybatis
  • 2025 全球酒店用品厂家竞争力排行榜发布:扬州卓韵领衔,布草工厂实力重塑行业格局
  • 使用iso制作ubuntu22.04docker镜像
  • 【数据结构初阶】--单链表(一)
  • ICCV2025 特征点检测 图像匹配 RIPE
  • dify 用postman调试参数注意
  • 【数据结构初阶】--顺序表(二)
  • Compose笔记(三十四)--LayoutModifier
  • Raft-领导者选举
  • 基于YOLO11的垃圾分类AI模型训练实战
  • C语言课程设计--电子万年历
  • 第十八天,7月12日,八股
  • Agent 设计模式
  • 卫星通信终端天线的5种对星模式之二:DVB跟踪
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 关于赛灵思的petalinux zynqmp.dtsi文件的理解
  • C++ Primer(第5版)- Chapter 7. Classes -001