java_进阶:file类

File 类

  • 文件和目录路径名的抽象表示
  • 文件和目录可以通过File封装成一个对象
    File 类生成的对象就代表一个特定的文件或目录,并且 File 类提供了若干方法对这个文件或目录进行读写等各种操作。
    对于File而言,封装的并不是一个真正存在的文件,仅仅只是一个路径而已。他可以是存在的,也可以是不存在的。
  • File 类在 java.io 包下,与系统输入/输出相关的类通常都在此包下。

1、File 类的构造方法

File(String pathname):创建一个新的 File 实例,该实例的存放路径是 pathname。

File(String parent, String child):创建一个新的 File 实例,该实例的存放路径是由 parent 和 child 拼接而成的。

File(File parent, String child):创建一个新的 File 实例。 parent 代表目录, child 代表文件名,因此该实例的存放路径是 parent 目录中的 child 文件。

File(URI uri):创建一个新的 File 实例,该实例的存放路径是由 URI 类型的参数指定的。

2、创建跨平台File类的路径

File.pathSeparator:与系统有关的路径分隔符,值是一个字符串,如在Windows
中的此值是**’;’,在Linux中的此值是’:’**。

File.pathSeparatorChar:与系统有关的路径分隔符,值是一个字符,如在
Windows中的此值是**’;’,在Linux中的此值是’:’**。

File.separator:与系统有关的路径层级分隔符,值是一个字符串,如在Windows中
的此值是**’’,在Linux中的此值是’/’**。

File.separatorChar:与系统有关的路径层级分隔符,值是一个字符,如在
Windows中的此值是**’’,在Linux中的此值是’/’**。

3、JDK 静态导入特性

JDK 从 1.5 版开始,增加了静态导入的特性,用来导入指定类的某个静态属性或静态方法,或全部的静态属性或静态方法,静态导入使用 import static 语句。

4、File类的创建方法

booleancreateNewFile() 当且仅当具有该名称的文件尚不存在时,原子地创建一个由该抽象路径名命名的新的空文件。
booleanmkdir() 创建由此抽象路径名命名的目录。
booleanmkdirs() 创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录。
    public static void main(String[] args) throws IOException {//在D的IO目录下创建一个文件java.txtFile  f1 = new File("D:\\IO\\java.txt");boolean b = f1.createNewFile();System.out.println(b);// 在D盘的IO目录下下创建一个目录 JavaSESystem.out.println("---------------------------------");File  f2 = new File("D:/IO/JavaSE");System.out.println(f2.mkdir());System.out.println("---------------------------------");// 在D盘的IO目录下创建一个多级目录 JavaWeb\HTML//File.separator 根据操作系统自动判断使用那种路径分隔符File f3 = new File("D:" + File.separator+"IO"+File.separator+"JavaWeb"+File.separator+"HTML");System.out.println(f3);System.out.println(f3.mkdirs());}

5、File类的判断和获取功能

判断:

booleanexists() 测试此抽象路径名表示的文件或目录是否存在。
booleanisAbsolute() 测试这个抽象路径名是否是绝对的。
booleanisDirectory() 测试此抽象路径名表示的文件是否为目录。
booleanisFile() 测试此抽象路径名表示的文件是否为普通文件。
booleanisHidden() 测试此抽象路径名命名的文件是否为隐藏文件。

获取:

StringgetAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
StringgetName() 返回由此抽象路径名表示的文件或目录的名称。
StringgetParent() 返回此抽象路径名的父 null的路径名字符串,如果此路径名未命名为父目录,则返回null。
FilegetParentFile() 返回此抽象路径名的父,或抽象路径名 null如果此路径名没有指定父目录。
StringgetPath() 将此抽象路径名转换为路径名字符串。
String[]list() 返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
String[]list(FilenameFilter filter) 返回一个字符串数组,命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[]listFiles() 返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File[]listFiles(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File[]listFiles(FilenameFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
    public static void main(String[] args) {// 创建File对象File f1 = new File("D:\\IO\\Java.txt");System.out.println(f1.isAbsolute());//测试是否是绝对路径表示  trueSystem.out.println(f1.isDirectory());//测试是否是目录  falseSystem.out.println(f1.isFile());//测试是否是文件 trueSystem.out.println(f1.exists());//判断该路径表示的File对象是否真实存在 trueSystem.out.println("------------------获取-----------------------");System.out.println(f1.getAbsolutePath());//D:\IO\Java.txtSystem.out.println(f1.getPath());//D:\IO\Java.txtSystem.out.println(f1.getName());//Java.txtSystem.out.println("-----------------------获取列表------------------------");File f2 = new  File("D:\\IO");String[] strFiles = f2.list();for(String str: strFiles){System.out.println(str);}System.out.println("--------------------------------------");File[] files =  f2.listFiles();for(File f : files){System.out.println(f.getName());}}

6、File的删除功能

booleandelete() 删除由此抽象路径名表示的文件或目录。
  • 该删除功能 只能删除文件或空目录,如果目录不为空,则删除失败
  • 使用该方法删除的文件和目录不会进入到回收站

7、绝对路径和相对路径

  • 绝对路径: 完整的路径名,不需要任何其他信息就可以直接定位文件所在的位置
    在windowns系统中 ,都是一个盘符开头
    linux系统下都是以"/"

  • 相对路径:必须使用自其他领的信息进行解释

8、遍历目录

需求: 给定一个路径(D:\IO)通过代码完成遍历该目录下的所有内容,并把所有的文件的绝对及路径输出在控制台

分析:
1 D:\\IO本身是一个目录 listFiles获取根目录下的所有文件和目录
2 依次对其中的目录文件进行输出
3 如果遇到目录 则执行1相同操作。 采用递归思想

public class FileDemo5 {public static void main(String[] args) {File srcFile = new File("D:\\IO");//调用方法 递归getAllFilePath(srcFile);}//定义一个方法  用于获取给定目录下的所有的文件及其目录的绝对路径public  static void  getAllFilePath(File srcFile){File[] files =   srcFile.listFiles();// 判断  是否可以得到目录数组if(files != null){//遍历该数组  得到每一个File对象for (File  file :files){//判断该File表示的是目录还是文件if(file.isDirectory()){getAllFilePath(file);//递归}else{System.out.println(file.getAbsolutePath());}}}}
}

9、重命名

public class FileDemo6 {/*D:\IO\百家讲坛\001_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_孝敬之道.aviD:\IO\百家讲坛\002_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_智慧之道.aviD:\IO\百家讲坛\003_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_学习之道.aviD:\IO\百家讲坛\004_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_诚信之道.aviD:\IO\百家讲坛\005_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_知世之道.aviD:\IO\百家讲坛\006_百家讲坛【栏目宗旨为建构时代常识,享受智慧人生】_于丹_论语_忠恕之道.avi
对以上文件进行重命名*/public static void main(String[] args) {File file = new File("D:\\IO\\百家讲坛");File[] files = file.listFiles();System.out.println(files);for (File f : files) {String oldName = f.getName();String newName = oldName.substring(0, oldName.indexOf("_")) + oldName.substring(oldName.lastIndexOf("_"));//boolean renameTo(File dest)重命名由此抽象路径名表示的文件File ff = new File(file,newName);f.renameTo(ff);//将当前文件重命名到ff所表示的抽象路径}}
}

重命名还可以对文件进行移动


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部