天天看点

File类详解

一、概述

文件和目录路径名的抽象表示形式。

File更应该叫做一个路径,文件路径或者文件夹路径;路径分为绝对路径和相对路径,绝对路径是一个固定的路径,从盘符开始;相对路径相对于某个位置,在eclipse下是指当前项目下。

二、构造方法

File(File parent, String child)

          根据 parent 抽象路径名和 child 路径名字符串创建一个新

File

实例。

File(String pathname)

          通过将给定路径名字符串转换为抽象路径名来创建一个新

File

实例。

File(String parent, String child)

          根据 parent 路径名字符串和 child 路径名字符串创建一个新

File

实例。

File(URI uri)

          通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
File file = new File("F:\\java学习\\day01.avi");

File file = new File("xxx.txt");

String parent = "F:\\java学习";
String child = "day01.avi";
File file = new File(parent,child);

File parent = new File("F:\\java学习");
String child = "day01.avi";
File file = new File(parent, child);
           

注:第一种方式比起第三种方式,可以更加方便的使用File类中的相关方法

三、File类的创建功能

 boolean

createNewFile()

          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

 boolean

mkdir()

          创建此抽象路径名指定的目录。

 boolean

mkdirs()

          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
File file = new File("yyy.txt");
System.out.println(file.createNewFile());			//如果没有就创建,返回true

File dir1 = new File("aaa");
System.out.println(dir1.mkdir());

File dir2 = new File("bbb.txt");            //这样写是可以的,文件夹也是可以有后缀的
System.out.println(dir2.mkdir());

File dir3 = new File("ccc\\ddd");
System.out.println(dir3.mkdirs());              //创建多级目录

           

四、File类的重命名和删除功能

 boolean

renameTo(File dest)

          重新命名此抽象路径名表示的文件。

 boolean

delete()

          删除此抽象路径名表示的文件或目录。

重命名注意事项

  •     如果路径名相同,就是改名。
  •     如果路径名不同,就是改名并剪切。
File file1 = new File("ooo.txt");
File file2 = new File("D:\\xxx.txt");
System.out.println(file1.renameTo(file2));
           

删除注意事项:

  •     Java中的删除不走回收站。
  •     要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹; windows中也是,先遍历删除每一个文件然后再删除文件夹。
File file1 = new File("yyy.txt");
System.out.println(file1.delete());

File file2 = new File("aaa");
System.out.println(file2.delete());

File file3 = new File("ccc");              //如果删除一个文件夹,那么文件夹必须是空的
System.out.println(file3.delete());
           

五、File类的判断功能

 boolean

isDirectory()

          测试此抽象路径名表示的文件是否是一个目录。

 boolean

isFile()

          测试此抽象路径名表示的文件是否是一个标准文件。

 boolean

exists()

          测试此抽象路径名表示的文件或目录是否存在。

boolean

canExecute()

          测试应用程序是否可以执行此抽象路径名表示的文件。

 boolean

canRead()

          测试应用程序是否可以读取此抽象路径名表示的文件。

 boolean

canWrite()

          测试应用程序是否可以修改此抽象路径名表示的文件。

 boolean

isHidden()

          测试此抽象路径名指定的文件是否是一个隐藏文件。
File file = new File("zzz");
file.setReadable(false);
System.out.println(file.canRead());          //windows系统认为所有的文件都是可读的
file.setWritable(true);
System.out.println(file.canWrite());         //windows系统可以设置为不可写

File file2 = new File("aaa.txt");
System.out.println(file2.isHidden());        //判断是否是隐藏文件
System.out.println(file.isHidden());
           

六、File类的获取功能

 String

getAbsolutePath()

          返回此抽象路径名的绝对路径名字符串。

 String

getPath()

          将此抽象路径名转换为一个路径名字符串。

 String

getName()

          返回由此抽象路径名表示的文件或目录的名称。

 long

length()

          返回由此抽象路径名表示的文件的长度。

 long

lastModified()

          返回此抽象路径名表示的文件最后一次被修改的时间。

 String[]

list()

          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

 File[]

listFiles()

          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File dir = new File("F:/");
String[] arr = dir.list();                //仅为了获取文件名

for (String string : arr) {
   System.out.println(string);
}

File[] subFiles = dir.listFiles();

for (File file : subFiles) {               //获取文件对象
   System.out.println(file);
}