File

来源:互联网 发布:龙门镖局知乎 编辑:程序博客网 时间:2024/06/11 16:37

File

要学习IO流,就必须掌握硬盘上的路径的表形式,Java就提供了一个File类:文件件和目录路径名的抽象表示形式

构造方法:
public File(String pathname):将该路径名称封装成了一个File实例
例: File f = new File(“e:\demo\a.txt”);
File(String parent, String child):将父文件夹或者目录里面的child文件封装成一个File实例
例: File f = new File(“e:\demo\”,”a.txt”);
File(File parent, String child:参数一:表示封装了File对象,该文件夹下的文件
例: File f1 = new File(“e:\demo”);
File f2 = new File(f1,”a.txt”);

File类中常用的成员方法:
public boolean createNewFile():表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException
public boolean mkdir():创建文件夹/目录,如果存在该文件夹,就不需要创建
public boolean mkdirs():创建文件夹/目录,如果不存在该目录,就创建!
public boolean delete()删除此抽象路径名表示的文件或目录

   注意:1)如果我们在写路径的时候,没有带盘符,那么默认是在你当前项目路径下!    2)java中的删除不走回收站    3)delete不能删除该文件夹下有文件或者是文件夹的,删除空文件夹    public boolean renameTo(File dest):重命名        注意:    两个文件的路径一致的情况下:只是改名字    两个文件的路径不一致的情况下:不但改名,并且剪切(当前的盘符路径下)

File类中提供了一些判断功能:
public boolean isAbsolute():判断该路径是否是绝对路径
public boolean isFile()判断此文件是否为一个标准文件
public boolean isHidden():判断此抽象路径表示的文件是否是一个隐藏文件
public boolean canRead():可读
public boolean canWrite():可写

File类的获取功能:(基本获取功能)
public String getAbsolutePath():获取绝对路径
public STring getPath():获取相对路径
public String getName():获取文件或者目录的名称
public long length():获取文件的长度
public long lastModified():返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值

代码:

 public static void main(String[] args) throws IOException {    //public File(String pathname):将该路径名称封装成了一个File实例    File f1 = new File("e:\\aaa\\bbb\\ccc");    //public boolean mkdirs():创建文件夹/目录,如果不存在该目录,就创建!    System.out.println(f1.mkdirs());    //public boolean createNewFile():表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException    File f2 = new File("e:\\b.txt");    System.out.println(f2.createNewFile());    //public boolean delete()删除此抽象路径名表示的文件或目录    File f3 = new File("e:\\aaa\\bbb\\ccc");        System.out.println(f3.delete());    //public boolean renameTo(File dest):重命名     File file = new File("e:\\b.txt");    File newFile = new File("e:\\c.txt");    System.out.println(file.renameTo(newFile));    //  public String getAbsolutePath():获取绝对路径    File f4 = new File("e:\\b.txt");    System.out.println(f4.getAbsolutePath());    //public STring getPath():获取相对路径    System.out.println(f4.getPath());    //public String getName():获取文件或者目录的名称    System.out.println(f4.getName());    //public long length():获取文件的长度    System.out.println(f4.length());    //public long lastModified():返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值    System.out.println(f4.lastModified());}

结果:

true
true
true
true
e:\b.txt
e:\b.txt
b.txt
0
0

File类的高级获取功能:
public String[] list():该方法是获取指定盘符下的所有的文件以及文件夹的名称数组
public File[] listFiles():获取指定盘符下的所有文件以及文件夹的File对象数组(常用)

需求:

   将c盘中所有的文件以及文件夹的名称获取

代码:

  public static void main(String[] args) {    File f = new File("c:\\");    String[] s = f.list();    for(String ss : s){        System.out.println(ss);    }    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");    File[] ff = f.listFiles();    if(ff != null){        for(File fff : ff){            String name = fff.getName();            System.out.println(name);        }    }}

结果:

$Recycle.Bin
Boot
bootmgr
BOOTSECT.BAK
Documents and Settings
Drivers
Intel
OEMSF
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~
$Recycle.Bin
Boot
bootmgr
BOOTSECT.BAK
Documents and Settings
Drivers
Intel
OEMSF
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows

文件名称过滤器

    实现FilenameFilter接口(使用匿名内部类的方式,并且重写accept()方法:测定指定文件是否包含在某一文件中)    public File[] listFiles(FileFilter filter)    public String[] list(FilenameFilter filter)(这个文件名称过滤器中常用)

需求:

 判断E盘目录下是否有后缀名为.txt的文件,如果有,就输出此文件名称

代码:

 public static void main(String[] args) {    File f = new File("e:\\");    String[] list = f.list(new FilenameFilter(){        @Override        public boolean accept(File dir, String name) {            File f = new File(dir,name);            boolean b1 = f.isFile();            boolean b2 = name.endsWith(".txt");            return b1 && b2;            //匿名对象的方法

// return new File(dir,name).isFile() && name.endsWith(“.txt”);
}

    });    for(String s :list){        System.out.println(s);    }}

结果:

a.txt
c.txt