定义:

  1. File类在java.io包下,是java对文件和目录的抽象,用于操作文件或目录,比如创建、删除、执行等等。
  2. File类的实例一旦创建就不可改变的,也就是说File类的实例是对a文件的抽象,一旦创建,就不可改变成对其他文件的抽象,只能对a文件。

API讲解:

属性讲解:

//依赖于系统的文件路径分隔符,会随着操作系统的不同而不同,在windows系统上是\,linux系统上是/。
public static final char separatorChar;//依赖于系统的文件路径分隔符,上面是字符型,这个是字符串类型,会随着操作系统的不同而不同,在windows系统上是\,linux系统上是/。
public static final String separator;//上面属性两个示例:
//一个文件路径可表示为  "xx" + separator + "xxx" + separator + "xxxx"
//windows:   C:\\xx\\xxx\\xxxx ,使用双反斜杠\\因为反斜杠\是转义特殊字符,所以要用前面的反斜杠把后面的反斜杠转义成普通字符。
//linux:/xxx/xxx/xxxxx//依赖于操作系统的多个文件路径的分隔符,在window上是 ; ,在linux上是 : 。
public static final char pathSeparatorChar;//依赖于操作系统的多个文件路径的分隔符,在window上是 ; ,在linux上是 : 。
public static final String pathSeparator;//上面多个文件路径示例:
// "xx" + separator + "xxx" + separator + "xxxx" + pathSeparator + "aa" + separator + "aaa" + separator + "aaaa"
//windows: C:\\xx\\xxx\\xxxx;C:\\aa\\aaa\\aaaa 表示两个文件的路径 //查看环境变量的路径也可看出是使用分号分隔。
//linux: /xx/xxx/xxxx:/aa/aaa/aaaa  //使用echo $PATH 查看多个路径使用冒号分隔。

**总结:**使用这两个属性(这4个属性实际上是两个属性)可以实现动态指定文件路径分隔符和多文件路径分隔符,使得代码可以不用修改而运行在不同的操作系统上。

构造器讲解:


/**
*可以指定上级目录
*parent:上级目录的file抽象,必须要为目录并且目录存在,否则就是抛出异常。
*child:子路径,可以直接指定文件名,也可以指定目录+文件
*最终生成的文件路径为parentPath + childPath
*
public File(File parent, String child)//直接指定路径生成文件或目录
public File(String pathname)//跟第一个构造器相似,只是parent从File对象改为String对象。
public File(String parent, String child)//通过将给定的File:URI转换为抽象路径名来创建新的文件实例。使用file协议。
public File(URI uri)//输入的路径可以是绝对路径也可以是相对路径。

方法API讲解:

//对File实例所设置的文件路径创建一个空白文件,当且仅当该路径上的设置文件不存在时才会创建,
//并且创建该文件的过程是一个原子操作。返回true说明创建了文件,false说明没有创建。
public boolean  createNewFile();/**
*在系统默认的临时文件夹中创建一个临时文件。
*prefix:文件名前缀。
*suffix:文件名后缀。
* 生成的临时文件名为:prefix + 一串数字 + suffix
* 改方法是一个类方法,可以直接File.createTempFile(prefix,suffix)调用。
* 返回创建的临时文件File实例。
*/
public static File  createTempFile(String prefix, String suffix);//与上面的方法一样,只是它可以指定临时文件生成的目录。
public static File createTempFile(String prefix, String suffix, File directory);//删除该File实例表示的文件或者目录。返回true表示删除成功,false表示失败。
//删除目录时只有该目录下没有任何文件或者子目录才能删除成功。
public boolean  delete();//调用了该方法不会立即删除文件或者目录,当虚拟机正常终止时(非正常终止不会进行)会进行文件或者目录的删除。
//删除目录时只有该目录下没有任何文件或者子目录才能删除成功。
public void deleteOnExit();//判断obj对象的抽象路径名与该file实例的抽象路径名是否相等。
//返回true的情况是obj!=null 并且 obj属于File类,并且obj对象的抽象路径名与该file实例的抽象路径名相等。
//windows系统的文件是大小写不敏感,而unix系统时大小写敏感的,这个要注意。
public boolean equals(Object obj);//与equals方法类似,判断两个File实例的抽象路径名称是否一致。一致返回0,否则返回-1。
public int  compareTo(File pathname)//判断该File实例表示的文件或者目录是否存在,存在返回true,不存在返回false。
public boolean exists();//获取该文件的绝对路径。
public String   getAbsolutePath();//返回用绝对路径创建的File实例,file.getAbsoluteFile();相当于new File(file.getAbsolutePath())
public File getAbsoluteFile();//返回文件或目录的既绝对,又规范的路径名。
//规范是依赖于操作系统的,比如windows系统规范路径是盘符要大写的。所以new File("d:\\aa")的规范路径是D:\\aa。比如在Unix系统上,从路径名中删除多余的名称,如“.”和“.”,解析符号链接。
//一个文件的表示路径有很多种。
//比如表示/root/a.txt文件。路径表示的方法有/root/a.txt、在/root目录下表示a.txt,在/root/aa目录下可以表示../a.txt、在/opt目录下表示../root/a.txt。但是一个文件的规范绝对路径只能有一种,是惟一的。//规范路径:D:\AAAAddd\80AAss.txt  这个也是绝对路径
//绝对路径:d:\AAAAddd\80AAss.txt
public String getCanonicalPath();//返回用规范路径创建的File实例,file.getAbsoluteFile();相当于new File(file.getCanonicalPath())
public File getCanonicalFile()//返回file实例路径所在分区的空闲空间大小,单位字节。
//file实例的抽象路径对应的文件或者目录如果不存在就返回0.
public long getFreeSpace();//返回file实例的文件或目录名,不包含上级目录,比如/home/yns/a.txt会返回a.txt。
public String   getName();//返回该file实例的父目录路径名,如果没有父目录则返回null。这个路径取决于创建file实例时传入的路径。
//new File("C:\\dd\\aa\\c.txt").getParent(); 返回C:\\dd\\aa
//new File("dd\\aa\\c.txt").getParent(); 返回dd\\aa
//new File("c.txt").getParent(); 返回null,这种是没有父目录的情况。
public String getParent();//获取file实例表示的路径,这个路径就是我们创建file实例是构造器传入的路径。
//new file("aa.txt") 返回aa.txt
//new file("dd\\aa\\aa.txt") 返回dd\\aa\\aa.txt
//new file("d:\\aa\\aa.txt") 返回d:\\aa\\aa.txt
//new file("aa\\dd\\cc","ee\\aa.txt") 返回aa\\dd\\cc\\ee\\aa.txt
public String getPath();//返回file实例路径所在分区的总空间大小,单位字节。
//file实例的抽象路径对应的文件或者目录如果不存在就返回0.
public long getTotalSpace()//返回file实例的抽象路径是不是绝对路径,是就返回true,否则返回false。
//这个判断是依赖于操作系统的比如windows系统的绝对路径是从盘符开始,unix系统以/开头。
public boolean isAbsolute();//判断该file实例表示的是不是目录,是就返回true,否则返回false。
//当且仅当file实例表示的文件存在并且是目录时返回true。
public boolean isDirectory()//判断该file实例表示的是不是普通,是就返回true,否则返回false。
//当且仅当file实例表示的文件存在并且不是目录并且满足系统其它相关条件时返回true。
//Java应用程序创建的任何非目录文件都保证是普通文件。
public boolean isFile();//判断file实例表示文件是不是隐藏文件。
//返回true的前提是该file实例表示的文件或目录必须存在。
//这个判断依赖于系统,比如windows系统要设置标记为隐藏文件,unix系统用.开头的文件表示隐藏文件。
public boolean isHidden();//获取file实例表示的文件最后修改的时间,是一个时间戳,如果文件不存在返回0.
public long lastModified();//获取file实例表示的文件或者目录的大小,单位字节,如果文件或者目录不存在返回0。
public long length();//返回file实例表示的目录下的文件和目录(不包括子目录)名称数组。每个字符串都是一个文件名,而不是完整的路径。
//如果file实例表示的不是目录或者表示的文件不存在,就返回null。
//无法保证结果数组中的名称字符串将以任何特定的顺序出现;尤其不能保证它们按字母顺序出现。
public String[] list();//与list()方法类似,不过返回是File实例数组
public File[] listFiles()//获取系统可用的根目录的file实例。
//依赖于系统 比如windows系统中盘符就是根目录,可能会有c: 、d:等根目录。unix系统中只有一个根目录/。
//也受外部硬件环境的影响,比如你插了个u盘就会显示多一个根目录。
//静态方法,可File.listRoots();直接调用。
public static File[] listRoots();//创建一个file实例表示的路径的目录。
//当file实例表示的路径文件不存在时才会进行创建。
//不支持递归创建,比如该路径的父目录不存在时,就会创建失败。
//创建成功返回true。失败返回false。
public boolean mkdir();//递归创建目录。
//如果此操作失败,也有可能已成功创建了一些必需的父目录。
//如果且仅当目录与所有必需的父目录一起创建时为true;否则为false
public boolean mkdirs();//将file实例代表的文件或者目录重命名,或者说文件目录移动。成功返回true。
//文件不存在时返回false。
//移动到的目录必须存在,否则返回false。
public boolean renameTo(File dest);//就是getPath();public String toString() {return getPath();}

一些要演示的api:


//与list()方法类似,不过它传入一个文件名过滤器FilenameFilter 。可以对文件进行过滤。
public String[] list(FilenameFilter filter);//与listFiles()方法类似,不过它传入一个文件名过滤器FilenameFilter 。可以对文件进行过滤。
public File[] listFiles(FilenameFilter filter)

演示代码:


public class FileDemo {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {fun();}/*** 文件名过滤器,过滤以a开头的文件*/private static class MyFilenameFilter implements FilenameFilter{//实现FilenameFilter自定义过滤器Retry,并重写accept@Overridepublic boolean accept(File dir, String name) {//会过滤掉返回false的文件或者目录if(name.startsWith("a"))return false;return true;}}private static MyFilenameFilter myFilenameFilter = new MyFilenameFilter();public static void fun() throws IOException, URISyntaxException, InterruptedException {File file = new File("D:\\baiduyun");System.out.println(Arrays.toString(file.list(myFilenameFilter)));System.out.println(Arrays.toString(file.listFiles(myFilenameFilter)));}
}

目录下的文件:

执行结果:

解析:以a开头的文件或者目录被过滤了。


//与listFiles()方法类似,不过它传入了一个FileFilter 过滤器,过滤掉一定条件的文件或者目录。
public File[] listFiles(FileFilter filter);

演示:

public class FileDemo {public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {fun();}public static void fun() throws IOException, URISyntaxException, InterruptedException {File file = new File("D:\\baiduyun");//过滤掉目录和大于10个字节的文件System.out.println(Arrays.toString(file.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {//过滤掉目录if (pathname.isDirectory())return false;//过滤掉大小大于10个字节的文件if (pathname.length()>10)return false;return true;}})));}
}

执行结果(目录文件看上图):

File类讲解到此结束。

Java IO之File类详解相关推荐

  1. 【JDK源码】java.io包常用类详解

    看完java.io的JDK源码,在网上发现一篇关于java.io中的类使用的文章总结的很全面,看完之后在原文的基础上加了一些自己的总结如下构成了本篇文章.原文地址 一.Java Io流 1. Java ...

  2. 【Java菜鸟 04】Java中的File类详解

    Java.io.File类主要是完成了文件夹管理的命名.查询文件属性和处理目录等操作,它不进行文件夹内容的读取操作. 1.构造函数: File file = new File(inputPath); ...

  3. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  4. java线程池ThreadPoolExecutor类详解

    线程池有哪些状态 1. RUNNING:  接收新的任务,且执行等待队列中的任务 Accept new tasks and process queued tasks  2. SHUTDOWN: 不接收 ...

  5. stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

  6. java file类详解_Java File类详解及IO介绍及使用

    我是一个CPU:这个世界慢!死!了!,可以感受到CPU,内存和硬盘之间的速度比较. 文件的本质 OS(操作系统)的目的就是可以让上层程序可以通过一种统一的方式去拿到无论什么磁盘里的文件(即一段字节流) ...

  7. Java File类详解

    在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成.File 类定义了一些方法来操作文件,如新 ...

  8. java并发编程Future类详解

    作用和举例 future类的作用就是为了调用其他线程完成好后的结果,再返回到当前线程中,如上图举例: 小王自己是主线程,叫外卖等于使用future类,叫好外卖后小王就接着干自己的事去了,当外卖到了的时 ...

  9. Java—File类详解及实践

    关注微信公众号:CodingTechWork,一起学习进步. File类介绍 File类概述   File类是java.io包下代表与平台无关的文件和目录.File可以新建.删除.重命名文件和目录,但 ...

最新文章

  1. Resource punkt not found.nltk.download()下载失败
  2. 转:Java NIO系列教程(九) Pipe
  3. ei会议论文录用但不参加会议_会议论文有录用通知吗
  4. VTK修炼之道42:频域处理_高通滤波(理想+巴特沃兹)
  5. 程序员必须掌握的英语单词
  6. WS-Eventing、WS-Transfer Web服务标准
  7. spring boot html乱码,Spring-boot 字符集设置 解决乱码方案
  8. Bootstrap table分页问题汇总
  9. 循序渐进之Maven(4) - 第一个SpringMVC项目
  10. 最新25个高质量PSD素材免费下载
  11. 《构建之法》读后感二
  12. ORM框架 之 Entity Framework
  13. 腾讯、阿里能像 Facebook 一样发币吗?
  14. 卡方检验python程序_Python卡方检验
  15. 数据可视化:基本图表
  16. 【微信技术-微信小程序】------- 渐进式骨架屏(加载流)(第二篇)
  17. {  周赛  }又被虐爆了
  18. nacos整合springmvc:解决使用@Value或@NacosValue无法从nacos配置中心动态获取最新配置数据问题
  19. 【机器学习】有监督、无监督、自监督、半监督、弱监督的区别
  20. 单片机I/O开漏输出详解 “与逻辑” ,改变上拉电源的电压,提供TTL/CMOS电平输出,标准的开漏脚一般只有输出的能力添加其它的判断电路,才能具备双向输入、输出的能力

热门文章

  1. Storm案例:统计单词个数
  2. 【BZOJ1999】树网的核,求树的直径+单调队列乱搞
  3. 2017.3.25 圆桌聚餐 思考记录
  4. noip2016的研究
  5. Bzoj 3226: [Sdoi2008]校门外的区间
  6. mysql++3307,mysql多实例配置方法
  7. C语言中字母转换问题
  8. c语言运行后出现xt073,2017年北京工业大学城市交通学院894C语言与数据结构之C程序设计考研强化模拟题...
  9. unity3d 使用GL 方式画线
  10. UE4手册中文翻译速查表