30_File类
java.io.File类
* 说明
* 1. 文件和文件目录路径的抽象表示,和平台(操作系统)无关
File对象
* 说明
* 1. File 能新建、删除、重命名文件和目录,但是不能访问文件内容本身
* 2. 访问文件内容需要使用 io流
* 3. 想在java程序中表示真实存在的文件或目录,那么必须有一个file对象
* 但是Java中的File对象,肯能没有一个真实存在的文件和目录(只是内存中的对象)
* 4. File对象可以作为参数传递给流的构造器
* 5. File对象表示 一个文件或一个目录
*
File构造器
* 方式
* File(String filePath)
* 以filePath为路径创建File对象,可以是绝对路径或者相对路径
* File(String parentPath,String childPath)
* 以parentPath为父路径,childPath为子路径创建File对象。
* File(File parentFile,String childPath)
* 根据一个父File对象和子文件路径创建File对象
* 说明
* 1. 无论指定路径下 有无文件的存在,File对象都会被创建
* 文件存在时 会将文件的属性 初始化到File对象内
* 文件不存在时 File对象内的属性 会被初始化默认值
*
文件路径
* 相对路径
* 相对于 某个路径下,idea 相对于model的路径
* 绝对路径
* 带根节点的路径
*
路径分隔符
* window : \\
* unix : /
* 分隔符常量 : public static final String separator
* 示例
* win : new File("d:\\Work\\info.txt")
* unix : new File("d:"+ File.separator+ "Work"+ File.separator+ "info.txt")
* 通用 : new File("root/Work")
*
File类的常用方法
* 查询文件属性
* 对文件的判断
* 对文件的修改
import java.io.File /* * * java.io.File类 * 说明 * 1. 文件和文件目录路径的抽象表示,和平台(操作系统)无关 * File对象 * 说明 * 1. File 能新建、删除、重命名文件和目录,但是不能访问文件内容本身 * 2. 访问文件内容需要使用 io流 * 3. 想在java程序中表示真实存在的文件或目录,那么必须有一个file对象 * 但是Java中的File对象,肯能没有一个真实存在的文件和目录(只是内存中的对象) * 4. File对象可以作为参数传递给流的构造器 * 5. File对象表示 一个文件或一个目录 * * File构造器 * 方式 * File(String filePath) * 以filePath为路径创建File对象,可以是绝对路径或者相对路径 * File(String parentPath,String childPath) * 以parentPath为父路径,childPath为子路径创建File对象。 * File(File parentFile,String childPath) * 根据一个父File对象和子文件路径创建File对象 * 说明 * 1. 无论指定路径下 有无文件的存在,File对象都会被创建 * 文件存在时 会将文件的属性 初始化到File对象内 * 文件不存在时 File对象内的属性 会被初始化默认值 * * 文件路径 * 相对路径 * 相对于 某个路径下的路径,idea 相对于model的路径 * 绝对路径 * 带根节点的路径 * * 路径分隔符 * window : \\ * unix : / * 分隔符常量 : public static final String separator * 示例 * win : new File("d:\\Work\\info.txt") * unix : new File("d:"+ File.separator+ "Work"+ File.separator+ "info.txt") * 通用 : new File("root/Work") * * File类的常用方法 * 查询文件属性 * 对文件的判断 * 对文件的修改 * * 最佳实践 * 1. 判断指定目录下 是否有.jpg的文件,如果有就输出该文件的名称 * * * * * * */ // File类的构造器 object FileTest extends App { //1. File("路径") new File("txt") //相对路径,相对于model new File("/Users/dxm/Desktop/home/d_book/java_home/SparkDemo/sparkcore/src/main/data/word.txt") // 绝对路径 //2. File("parentPath","subPath") private val file = new File("/User", "dxm") //3. File(FileClass,"subPath") new File(file, "dxm") } // File类的常用方法 - 查询文件属性 object FileFunTest extends App { //1. 路径下文件存在 private val isfile = new File("sparkcore/src/main/data/word.txt") // 路径下文件不存在 private val nofile = new File("sparkcore/src/main/data/word1.txt") // 路径下文件为目录且存在 private val isdir = new File("sparkcore/src/main") println(s"获取文件绝对路径-文件存在 : ${isfile.getAbsolutePath}") println(s"获取文件绝对路径-文件不存在 : ${nofile.getAbsolutePath}") println(s"获取文件绝对路径-目录存在 : ${isdir.getAbsolutePath}") println("") println(s"获取文件相对路径-文件存在 : ${isfile.getPath}") println(s"获取文件相对路径-文件不存在 : ${nofile.getPath}") println(s"获取文件相对路径-目录存在 : ${isdir.getPath}") println("") println(s"获取文件名称-文件存在 : ${isfile.getName}") println(s"获取文件名称-文件不存在 : ${nofile.getName}") println(s"获取文件名称-目录存在 : ${isdir.getName}") println("") //获取文件上级目录, 若无返回null println(s"获取文件上级目录-文件存在 : ${isfile.getParent}") println(s"获取文件上级目录-文件不存在 : ${nofile.getParent}") println(s"获取文件上级目录-目录存在 : ${isdir.getParent}") println("") //获取文件大小(字节数) println(s"获取文件大小-文件存在 : ${isfile.length}") println(s"获取文件大小-文件不存在 : ${nofile.length}") println(s"获取文件大小-目录存在 : ${isdir.length}") println("") //文件最后一次修改时间(毫秒值) println(s"获取文件最后修改时间-文件存在 : ${isfile.lastModified}") println(s"获取文件最后修改时间-文件不存在 : ${nofile.lastModified}") println(s"获取文件最后修改时间-目录存在 : ${isdir.lastModified}") println("") //获取指定目录下的所有文件 //返回 FileName的数组 private val fileNameArr: Array[String] = isdir.list //返回 File对象的数组 private val fileClassArr: Array[File] = isdir.listFiles println(fileNameArr.mkString(" ")) println(fileClassArr.mkString(" ")) //File对象指定的是文件 返回 null private val isfileNameArr: Array[String] = isfile.list() println(isfileNameArr) } // File类的常用方法 - 对文件的判断 object FileIsFunTest extends App { //1. 路径下文件存在 private val isfile = new File("sparkcore/src/main/data/newword.txt") // 路径下文件不存在 private val nofile = new File("sparkcore/src/main/data/word1.txt") // 路径下文件为目录且存在 private val isdir = new File("sparkcore/src/main") println("") //判断是否是目录 println(s"判断是否是目录-文件存在 : ${isfile.isDirectory}") println(s"判断是否是目录-文件不存在 : ${nofile.isDirectory}") println(s"判断是否是目录-目录存在 : ${isdir.isDirectory}") println("") //判断是否是文件 println(s"判断是否是文件-文件存在 : ${isfile.isFile}") println(s"判断是否是文件-文件不存在 : ${nofile.isFile}") println(s"判断是否是文件-目录存在 : ${isdir.isFile}") println("") //判断是否可读 println(s"判断是否可读-文件存在 : ${isfile.canRead}") println(s"判断是否可读-文件不存在 : ${nofile.canRead}") println(s"判断是否可读-目录存在 : ${isdir.canRead}") println("") //判断是否可写 println(s"判断是否可写-文件存在 : ${isfile.canWrite}") println(s"判断是否可写-文件不存在 : ${nofile.canWrite}") println(s"判断是否可写-目录存在 : ${isdir.canWrite}") println("") //判断是否隐藏文件 println(s"判断是否隐藏文件-文件存在 : ${isfile.isHidden}") println(s"判断是否隐藏文件-文件不存在 : ${nofile.isHidden}") println(s"判断是否隐藏文件-目录存在 : ${isdir.isHidden}") println("") //判断是否(文件或目录)存在 println(s"判断是否存在-文件存在 : ${isfile.exists}") println(s"判断是否存在-文件不存在 : ${nofile.exists}") println(s"判断是否存在-目录存在 : ${isdir.exists}") } // File类的常用方法 - 对文件的修改 object FileUpdateTest extends App { //1. 创建文件,若文件存在,则不创建 返回false private val isSuc: Boolean = new File("sparkcore/src/main/data/one.scala").createNewFile println(s"是否创建文件成功: ${isSuc}") //2. 创建目录(一级),若目录存在,则不创建 返回false // 上级目录必须存在 private val isDirSuc: Boolean = new File("sparkcore/src/main/data/two").mkdir() println(s"是否创建目录成功: ${isDirSuc}") //3. 创建目录(多级),若目录存在,则不创建 返回false // 上级目录如果不存在 会被创建 private val isMoreDirSuc: Boolean = new File("sparkcore/src/main/data/two/one/to").mkdirs println(s"是否创建多级目录成功: ${isMoreDirSuc}") //4. 删除(一级)文件或文件夹 // 删除不走废纸篓,无法找回 private val isDel: Boolean = new File("sparkcore/src/main/data/two/one/to").delete println(s"是否删除目录成功: ${isDel}") //5. 文件(目录)重命名(移动文件) // 将 参数对象的路径-file1 替换 调用对象的路径-file2 // 要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在 private val file1 = new File("sparkcore/src/main/data/one/three") private val file2 = new File("sparkcore/src/main/data/two/one") private val isRe: Boolean = file2.renameTo(file1) println(s"是否修改名称成功: ${isRe}") }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界