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