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}")





}
复制代码

 

posted @   学而不思则罔!  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示