File

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值