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. yarn/mapreduce工作机制及mapreduce客户端代码编写

    首先需要知道的就是在老版本的hadoop中是没有yarn的,mapreduce既负责资源分配又负责业务逻辑处理.为了解耦,把资源分配这块抽了出来,形成了yarn,这样不仅mapreudce可以用yar ...

  2. Android NDK开发 环境配置(一) 之多重CPU的兼容性

    今天我学习Android Studio当中的NDK,为什么要学习NDK呢,是因为领导给我提了一个BUG,这个BUG就是Android 多重CPU怎样兼容性,我现在先说一下,Android Studio ...

  3. Python操作列表

    1.List Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...

  4. 转:99%的人都理解错了HTTP中GET与POST的区别

    原贴来自:http://www.techweb.com.cn/network/system/2016-10-11/2407736.shtml GET和POST是HTTP请求的两种基本方法,要说它们的区 ...

  5. CentOS 7 更新软件源和系统

    [1] 首先备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/Cent ...

  6. C面向对象编程

    C语言面向对象编程 1. 定义一个SuperObject结构体, 里面包含最少的元素, 但是确实每一个对象都含有的, 这样可以实现多态 2. 每一个对象都是基于类的, 我们知道类都是单例对象, 所以我 ...

  7. iOS-swift-类和对象

    1.类(class) 使用关键字 class 创建一个类.属性直接在类里面声明,属性可以是变量,也可以是常量.方法和函数的创建方法一致. class Shape { var numberOfSides ...

  8. c# 远程连接sql server 2008问题

    http://hi.baidu.com/lzghxjt/item/d42bd8f7066a3ad86325d280 远程连接不上可以在防火墙新建入站规则

  9. SourceTree 跳过登陆

    当前只有Win的版本,Mac自行百度(笑) 很多人用git命令行不熟练,那么可以尝试使用sourcetree进行操作. 然鹅~~sourcetree又一个比较严肃的问题就是,很多人不会跳过注册或者操作 ...

  10. ChromiumFX

    序言 开发C#桌面应用程序有很多选择,比如WinForm或WPF. 这里我们用ChromiumFX. 目录 一.Centos7 从零编译Nginx+PHP+MySql 二.Centos7 从零配置Ng ...