Java中的File类

1.File类的静态成员变量:

1.static String pathSeparator           与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 

2.static char pathSeparatorChar     与系统有关的路径分隔符。 

3.static String separator                  与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 

4.static char separatorChar            与系统有关的默认名称分隔符。


import java.io.File;publicclass FileDemo {

    publicstaticvoid main(String[] args) {


        String s1 = File.pathSeparator;

        System.out.println(s1);//打印结果为  ;  在linux中是:


        String s2 =File.separator;        System.out.println(s2);//打印结果为  \  如果是Linux系统则为 /    }}

2.File类的构造方法:


在同一个案例中演示这三个构造方法:

import java.io.File;publicclass FileDemo {

    publicstaticvoid main(String[] args) {


        String pathName = "e:\\java_code\\day22e\\hello.java";

        File f1 =newFile(pathName);//将Test22文件封装成File对象。注意;有可以封装不存在文件或者文件夹,变成对象。        System.out.println(f1);


        File f2 =newFile("e:\\java_code\\day22e","hello.java");

        System.out.println(f2);


        //将parent封装成file对象。File dir =newFile("e:\\java_code\\day22e");

        File f3 =newFile(dir,"hello.java");

        System.out.println(f3);

    }

}  //输出的都是e:\\java_code\\day22e\\hello.java

3.java API中介绍的方法:(常用的标上了颜色)

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

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

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

int compareTo(File pathname)按字母顺序比较两个抽象路径名。

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

static File createTempFile(String prefix, String suffix)在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。

static File createTempFile(String prefix, String suffix, File directory)在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。

boolean delete()删除此抽象路径名表示的文件或目录。//注意:这个删除,不走回收站,直接删除,所以要小心使用。

void deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

boolean equals(Object obj)测试此抽象路径名与给定对象是否相等。

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

File getAbsoluteFile()返回此抽象路径名的绝对路径名形式。

String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。

File getCanonicalFile()返回此抽象路径名的规范形式。

String getCanonicalPath()返回此抽象路径名的规范路径名字符串。

long getFreeSpace()返回此抽象路径名指定的分区中未分配的字节数。

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

String getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。

File getParentFile()返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

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

long getTotalSpace()返回此抽象路径名指定的分区大小。

long getUsableSpace()返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

int hashCode()计算此抽象路径名的哈希码。

boolean isAbsolute()测试此抽象路径名是否为绝对路径名。

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

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

boolean isHidden()测试此抽象路径名指定的文件是否是一个隐藏文件。

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

long length()返回由此抽象路径名表示的文件的长度。字节数

String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。//遍历目录返回的只有名字

String[] list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。//返回路径全名  推荐

File[] listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

static File[] listRoots()列出可用的文件系统根。

boolean mkdir()创建此抽象路径名指定的目录。调用该方法时,File对象必须对应一个路径,而不是文件//只能创建一个目录

boolean mkdirs()创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。//即可创建一个目录,也可创建多及目录,推荐

boolean renameTo(File dest)重新命名此抽象路径名表示的文件。

boolean setExecutable(boolean executable)设置此抽象路径名所有者执行权限的一个便捷方法。

boolean setExecutable(boolean executable, boolean ownerOnly)设置此抽象路径名的所有者或所有用户的执行权限。

boolean setLastModified(long time)设置此抽象路径名指定的文件或目录的最后一次修改时间。

boolean setReadable(boolean readable)设置此抽象路径名所有者读权限的一个便捷方法。

boolean setReadable(boolean readable, boolean ownerOnly)设置此抽象路径名的所有者或所有用户的读权限。

boolean setReadOnly()标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。

boolean setWritable(boolean writable)设置此抽象路径名所有者写权限的一个便捷方法。

boolean setWritable(boolean writable, boolean ownerOnly)设置此抽象路径名的所有者或所有用户的写权限。

String toString()返回此抽象路径名的路径名字符串。

URI toURI()构造一个表示此抽象路径名的 file: URI。

URL toURL()已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。

下面介绍几个常用的方法:

import java.io.File;publicclass FileDemo {

    publicstaticvoid main(String[] args) {


                //创建文件对象File file =newFile("Test22.java");//创建文件对象,将其封装成file类对象,就可以调用file类的方法了               

                String absPath1 = file.getAbsolutePath();//获取文件的绝对路径,即全路径 返回的是String对象File absPath2 = file.getAbsoluteFile();//获取文件的绝对路径,即全路径 返回的是File对象               

                String path = file.getPath();//File中封装的路径是什么获取到的就是什么。               

                String filename = file.getName();//获取文件名称longsize = file.length();//获取文件大小               

                System.out.println("absPath1="+absPath1);

                System.out.println("absPath2="+absPath2);

                System.out.println("path="+path);

                System.out.println("filename="+filename);

                System.out.println("size="+size);

    }

}

import java.io.File;import java.io.IOException;publicclass FileDemo {

    publicstaticvoidmain(String[] args)throws IOException {   


        File file =newFile("d:\\file.java");

        booleanb = file.createNewFile();

        System.out.println(b);//输出为true,说明我的D盘下没有file.java文件 ,他已经自动帮我创建了一个如下图


    }

}

listFiles()方法介绍

publicclass FileMethodDemo3 {

    publicstaticvoid main(String[] args) {

        File dir =newFile("e:\\java_code");

        //获取的是目录下的当前的文件以及文件夹的名称。String[] names = dir.list();

        for(String name : names){

            System.out.println(name);

        }

        //获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息File[] files = dir.listFiles();

        for(File file : files){

            System.out.println(file);

        }

    }

}

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

4.文件过滤器

l  测试类

publicclass FileDemo2 {

    publicstaticvoid main(String[] args) {

        //获取扩展名为.java所有文件

        //创建File对象File file =newFile("E:\\code\\day11_code");

        //获取指定扩展名的文件,由于要对所有文件进行扩展名筛选,因此调用方法需要传递过滤器File[] files = file.listFiles(new MyFileFilter());

        //遍历获取到的所有符合条件的文件for (File f : files) {

            System.out.println(f);

        }

    }

}

l  自定类继承FilenameFilter过滤器接口

//定义类实现文件名称FilenameFilter过滤器classMyFileFilterimplements FilenameFilter{

    publicboolean accept(File dir, String name) {

        returnname.endsWith(".java");

    }

}

在查阅API时,我们发现,在listFiles(FileFilter filter) 也可以接受一个FileFilter过滤器,它和我们讲的FilenameFilter有啥区别呢?

FilenameFilter过滤器中的accept方法接受两个参数,一个当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称。

FileFilter 过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象

当我们需要过滤文件名称时就可以使用FilenameFilter这个过滤器,当我们想对当前文件或文件夹进行过滤,就可以使用FileFilter ,比如需要当前目录下的所有文件夹,就可以使用FileFilter 过滤器。

l  测试类

publicclass FileDemo2 {

    publicstaticvoid main(String[] args) {

        //获取扩展名为.java所有文件

        //创建File对象File file =newFile("E:\\code\\day11_code");

        //获取指定目录下的文件夹File[] files = file.listFiles(new FileFileterByDir());

        //遍历获取到的所有符合条件的文件for (File f : files) {

            System.out.println(f);

        }

    }

}

//自定义类继承FileFilter过滤器接口

//

文件过滤器classFileFileterByDirimplements FileFilter{

    publicboolean accept(File pathname) {

        return pathname.isDirectory();

    }欢迎工作一到五年的Java工程师朋友们加入Java群: 891219277

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容