File类

  File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。

  File类包含
       路径    path E:\...
       目录 directory 文件夹
       文件 file
File类的成员变量

例子:

// 名称分隔符
System.out.println(File.pathSeparator);//win ; linux :
// 路径分隔符
System.out.println(File.separator);//win \ linux /

File类的构造方法

  

File类构造方法不会检验文件是否存在

创建File对象

例子:

//
File file=new File("e:\\test\\a.txt");
//
File file=new File("e:","a.txt");//灵活性高,
//
File f1=new File("d:\\test");
File file=new File(f1,"a.txt");//灵活性更高

File类的获取

//获取绝对路径
public static void method3(){
//File file=new File("d:\\test\\a.txt");
//File file=new File("src");
File file=new File("abc");
//相对路径走的是本工程路径
System.out.println(file.getAbsolutePath());
}
  public static void method4(){
//获取本路径目录名或者文件名
File file=new File("d:\\codetool\\jdk1.8.zip");
System.out.println(file.getName());
//getPath()和toString()一个作用
System.out.println(file.getPath());
//返回文件的长度long(字节数)检测空间大小,不是容量大小
System.out.println(file.length());
}

文件或文件夹的创建删除与测试

    public static void methd4() throws IOException{
//创建文件,只能创建文件,不能创建文件夹
File f1=new File("e:\\test\\c");
System.out.println(f1.createNewFile());
}
public static void methd5() throws IOException{
//创建文件夹,只能创建文件夹,不能创建文件
File f1=new File("e:\\test\\d");
System.out.println(f1.mkdir());//单级目录,false
File f2=new File("e:\\test\\d\\aaa.txt");
System.out.println(f2.mkdirs());//多级目录,true
// mkdirs创建多级目录
}
    public static void method7(){
//删除文件或文件夹
//直接从硬盘上删除,不走回收站,
//删除需谨慎

      //删除目录时,如果目录中有内容,无法直接删除。

      //只有将目录中的内容都删除后,保证该目录为空。这时这个目录才可以删除

      File file=new File("d:\\test\\aaa.txt");

boolean flag=file.delete();
System.out.println(flag);
}
    public static void methd7(){
File f1=new File("e:\\test\\a.txt");
System.out.println(f1.exists());//判断文件或文件夹是否存在
//判断是否是文件
System.out.println(f1.isFile());
//判断是否是文件夹
File f2=new File("e:\\test");
System.out.println(f2.isDirectory()); }

listFiles()方法

例子:

public static void method9(){
File file =new File("e:\\test");
String[] files =file.list();//获取路径下所有的文件或者文件夹的字符串名称
for(String s:files){
File f1=new File(file,s); if(f1.getName().equals("a.txt")){
f1.delete();
} }
}
    public static void method10(){
File file =new File("e:\\test");
File[] files =file.listFiles();
for(File s:files){
System.out.println(s);
}
}

结果演示:

e:\test\b.txt
e:\test\c
e:\test\c.TXT
e:\test\d

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

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

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

文件过滤器

listFiles()方法,空参时,全部显示

有参数时,

FileFilter实现此接口的实例就可过滤文件名

该接口有accept方法

自定义类继承该接口

public class MyFilter implements FileFilter {

    public boolean accept(File pathname) {
/*String name=pathname.getName().toLowerCase();//先转字符串,再转小写
boolean flag=name.endsWith(".txt");//查找以什么结尾
return flag;*/
//如果是文件夹,则不过滤,加到File数组中
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".xml");
} }

测试类:

public static void main(String[] args) {

        File file =new File("e:\\test");
File[] files=file.listFiles(new MyFilter());
//listFiles方法在获取路径时调用accept方法,并将路径传入,
//如果该方法返回true,那么该文件对象放入File数组,如果是false,则不放入 //遍历获取到的所有符合条件的文件
for(File f:files){
System.out.println(f);
}
}

递归   

递归,指在当前方法内调用自己的这种现象

如:

public void method(){
System.out.println(“递归的演示”);
//在当前方法内调用自己
method();
}

    递归参与运行的方法主体不变,而运行的方法的参数变
    注意:递归必须要写一个程序的出口,否则程序无意义

递归的代码演示,计算1-n之间的和

public static void main(String[] args) {
System.out.println(a(100)); }
public static int a(int n){
if(n == 1){
return 1;
}
return n + a(n-1);
}
//a(100)=(100+(a(99)=99+a(98)=98+a(97)=......))

递归打印所有目录中的文件路径

public class FileDemo2 {
public static void main(String[] args) {
File file = new File("d:\\test");
getFileAll(file);
}
//获取指定目录以及子目录中的所有的文件
public static void getFileAll(File file) {
File[] files = file.listFiles();
//遍历当前目录下的所有文件和文件夹
for (File f : files) {
//判断当前遍历到的是否为目录
if(f.isDirectory()){
//是目录,继续获取这个目录下的所有文件和文件夹
getFileAll(f);
}else{
//不是目录,说明当前f就是文件,那么就打印出来
System.out.println(f);
}
}
}
}

搜索指定目录中.java文件(包含子目录)

自定类继承FileFilter过滤器接口

public class YourFilter implements FileFilter{

    public boolean accept(File pathname) {
//如果是文件夹,则不进行过滤,认为满足条件加到File数组中
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
} }

测试类:

public class Demo05 {
public static void main(String[] args) {
File file=new File("d:\\test");
getAllFile(file);
}
public static void getAllFile(File file){
File[] files=file.listFiles(new YourFilter());
for(File f:files){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}

File类,递归的更多相关文章

  1. day23<File类递归练习>

    File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部 ...

  2. 黑马程序员-File类+递归的简单应用

    Java File类   Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目 ...

  3. File类&递归

    File类1.什么是file类Java中处理操作系统文件的类.2.file思想创建一个File对象,代表了操作系统的具体的一个文件(文件,文件夹)然后通过这个File对象就可以操作该文件:删除该文件, ...

  4. IO流(File类--递归--过滤器--IO字节流--IO字符流--Properties集合--缓冲流--转换流--序列化流--打印流)

    一.File类 1.1概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.1.1相对路径与绝对路径 相对路径从盘符开始的路径,这是一个完整 ...

  5. 使用File类递归列出E盘下全部文件

    import java.io.File;public class FileListTest { public void tree(File file){ if(file.listFiles()!=nu ...

  6. Java——使用File类递归遍历指定路劲下的所有文件

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  7. Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹

    package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public clas ...

  8. File类 递归 获取目录下所有文件文件夹

    package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...

  9. 01 语言基础+高级:1-8 File类与IO流_day08【 File类、递归】

    day08[File类.递归] 主要内容 File类 递归 教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类 ...

  10. 异常、Throwable、finally、File类(十九)

    1.异常的概述和分类 * A:异常的概述 * 异常就是Java程序在运行过程中出现的错误.* B:异常的分类 * 通过API查看Throwable * Error * 服务器宕机,数据库崩溃等 * E ...

随机推荐

  1. 基于log4net自定义异步logging组件

    我们在做开发的时候,需要把一些信息记录下来,方便问题排查.数据分析和统计.通常我们使用log4net作为logging的工具,但是大部分时候需要加以封装,以便更加方便的使用,并且不妨碍主业务程序的运行 ...

  2. 将应用图标添加到ubuntu dash中

    1 在appplications中添加一个desktop文件 sudo gedit /usr/share/applications/xdbe.desktop 2 在desktop文件中添加如下 [De ...

  3. 工作采坑札记:1. Hadoop中的BytesWritable误区

    1. 背景 近日帮外部门的同事处理一个小需求,就是将HDFS中2018年至今所有存储的sequence序列化文件读取出来,重新保存成文本格式,以便于他后续进行处理.由于同事主要做机器学习方向,对had ...

  4. Debug Diagnostics Tool创建.Net异常转储并用Windbg分析异常

    当我们要在IIS PRD环境下分析异常,并且对问题毫无头绪,又没有权限直接上打Log的代码.这个时候就是Debug Diagnostics Tool & Windbg大显神威的时候了. Deb ...

  5. 给主程序签名及第三方dll强签名

    给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     给程序添加强签名方法:   本文以Quartz.dll为例,使用vs Tools下的工具命令.   打开命令工具是这个样子,   ...

  6. Calendar计算一个月前的日期,踩坑记录

    错误示范:calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);//获取一个月前的今天这种写法假设传入的日期为2019-03-3 ...

  7. 设计模式之装饰器模式io的小入门(十一)

    装饰器模式详解地址 原文总结 定义: 在不必改变原类文件和使用继承的情况下, 动态的扩展一个对象的功能. 通过创建一个包装对象, 也就是装饰来包裹真实的对象 部分详解提示 看了一些文档, 装饰器模式非 ...

  8. js-对象的方法详解

    Object.prototype 上的方法: constructor 返回创建该对象的构造函数 var arr = []; arr.constructor == function Array() { ...

  9. 【起航计划 027】2015 起航计划 Android APIDemo的魔鬼步伐 26 App->Preferences->Preferences from XML 偏好设置界面

    我们在前面的例子Android ApiDemo示例解析(9):App->Activity->Persistent State 介绍了可以使用Shared Preferences来存储一些状 ...

  10. SQL Union和Union All使用方法

    格式: [SQL 语句 1]UNION [SQL 语句 2] 对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: select ID,NAME from A UNION select I ...