博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java.IO.File类详解
阅读量:6674 次
发布时间:2019-06-25

本文共 3134 字,大约阅读时间需要 10 分钟。

hot3.png

JDK1.0就存在的File类:用于对文件进行一般性操作。由于NIO中有对File对象进行改善,现在对其进行一般性说明。

File类有四个构造函数:(都必须传入路径地址String或者Path)

  File(String pathname)

  File(File parent, String child)

  File(String parent, String child)

  File(URI uri) 

parent指定路径(父目录),可以是File类对象也可以是字符串,child中也可以加入路径层级,但要注意,所用的路径必须存在,不存在的路径不会新建。

 

  关于斜杠和反斜杠,只能如下生硬地先记住吧:

  \\:右手用两个,比如new File("D:\\abc\\" + "Test.txt");

  /:左手用一个。比如new File("D:/abc/" + "Test.txt");

创建目录

   public boolean mkdir()

创建path指向的最后一个文件夹,若之前文件不存在,则创建失败。(不报错)

  public boolean mkdirs()

根据path创建一系列文件夹,若文件不存在,挨个创建。

import java.io.File;/** * Created by li on 2016/10/24. * 1 */public class FileInputDemo {    public static void main(String[] args) {        File file = new File("D:/abc/xyz/hello");        System.out.println(file.exists());        file.mkdirs();    }}

 返回抽象路径名表示目录下的文件名和目录名。

  public File[] listFiles()

  返回抽象路径名下的所有文件。与list()方法的不同之处在于一个返回的是字符串,另一个返回的是File类对象

import java.io.File;/** * Created by li on 2016/10/24. * 1 */public class FileInputDemo {    public static void main(String[] args) {        File file = new File("D:/");        System.out.println(file.exists());        String[] dirName = file.list();        for (String d : dirName                ) {            System.out.println(d);        }    }}

文件管理

  在进行文件操作时,常需要知道一个关于文件的信息。

  Java的File类提供了方法来操纵文件和获得一个文件的信息。如getName()返回文件名,getParent()返回父目录名,exists()测试文件或目录是否存在。

  然而,File类是不对称的,说它不对称,意思是虽然存在允许验证一个简单文件对象属性的很多方法,但是没有响应的方法来修改这些属性,即有get无set。

  另外,File类还可以对目录和文件进行删除、属性修改等工作。方法名都比较直观,在此不多做介绍了。进行一下操作的时候先做判断(exists) createNewFile() delete() 

使用FilenameFilter

  希望能够限制由list()方法返回的文件,使它仅返回那些与一定的文件名方式或者过滤器(filter)相匹配的文件。

  为达到这样的目的,必须使用list()方法的带参数的重载形式:

  public String[] list(FilenameFilter filter)

  在该形式中,filter是一个实现了FilenameFilter接口的类的对象。

  该接口中有一个accept()方法,只有该方法判断为true的文件名会被list方法返回。所以可以在accept方法中设置筛选规则。(这里使用了策略模式,可以回想一下Java集合中的比较器)。

  在此直接放出程序实例,来查看指定目录下的文件:

 

import java.io.File;import java.io.FilenameFilter;public class FileTest4{    public static void main(String[] args)    {        File file = new File("D:/abc");        String[] names = file.list();        // 列出所有文件及路径        for (String name : names)        {            System.out.println(name);        }        System.out.println("-----------------------");        System.out.println("-------所有文件名为.java结尾的文件-----------");        // 选择.java结尾的文件        for (String name : names)        {            if (name.endsWith(".java"))            {                System.out.println(name);            }        }        // 使用文件过滤器        String[] selectedNames = file.list(new FilenameFilter()        {            // 匿名内部类实现了FilenameFilter接口            // 实现接口中的方法            @Override            public boolean accept(File dir, String name)            {                if (name.endsWith(".java")) { return true; }                return false;            }        });        // 只有accept返回true的文件名会被返回到selectedNames数组中        System.out.println("-----------------------");        System.out.println("-------所有文件名为.java结尾的文件-----------");        for (String name : selectedNames)        {            System.out.println(name);        }    }}

 

转载于:https://my.oschina.net/marjeylee/blog/775237

你可能感兴趣的文章
利用Apache Spark SQL和DataFrames扩展关系数据库
查看>>
立下“去O”Flag的AWS,悄悄修炼了哪些内功?
查看>>
Mango 的组织重构
查看>>
Spring Boot 2.2首个里程碑版本发布,改进性能和内存使用
查看>>
James Grenning访谈录:关于测试驱动开发及代码异味
查看>>
最重要的就是做正确的事
查看>>
SUM
查看>>
旷视砸20亿进军AIoT,发布国内首个机器人协作大脑河图
查看>>
持续交付模型中文化转型的重要意义
查看>>
IE安全系列:IE浏览器的技术变迁(上)
查看>>
Facebook引入Haskell升级Sigma防御系统
查看>>
做混沌工程是什么样的体验?阿里:有点刺激
查看>>
全面布局“边” “端”,腾讯云边缘计算技术探索及落地应用
查看>>
理解Monad,一份monad的解惑指南
查看>>
Micronaut for Spring支持Spring Boot应用以Micronaut形式运行
查看>>
捧上天的AI落地困难,“ 不懂变通”的华为云如何应付?
查看>>
CNCF宣布Envoy项目正式毕业
查看>>
无服务器仍然离不开基础设施管理
查看>>
新书问答:Agile Management
查看>>
使用Ballerina构建API网关
查看>>