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. ES6数组新增方法总结

    关于数组中forEach() .map().filter().reduce().some().every()的总结 let arr = [1, 2, 3, 4, 5] // forEach遍历数组 a ...

  2. Turn.js 实现翻书效果

    Turn.js的官方网址: http://www.turnjs.com/ 官网上运行demo如下,大家主要关注是 属性使用: <!DOCTYPE html> <html> &l ...

  3. 使用PIE对IE6、7、8进行CSS3兼容介绍和经验总结

    下面说说如何对 IE10 以下版本的浏览器进行部分 CSS3 兼容 国外团队开发的兼容插件,去年做项目时才发现,非常强大 主角:PIE.js ,  PIE.htc    两种方法可以实现 官方网站:h ...

  4. maya2014安装失败如何卸载重装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  5. LeetCode 860.柠檬水找零(C++)

    在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元.你必须给 ...

  6. [Silverlight][linq to sql]不能找到linq to sql自动生成类型

    最近在做Silverlight项目,结合使用了WCF RIA service,通过linq to sql自动生成model类型,使用起来非常方便.具体可见linq to sql之silverlight ...

  7. RSA算法、SSL协议学习笔记

    最近学习计算机网络,涉及到SSL协议,我想起了去年密码学课程讲过的非对称加密RSA算法,结合阮老师的博客,写写学习笔记,这里再回忆一下. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指 ...

  8. linux下文件比对功能

    很想对吧两个文本有什么不同,可linux下有没有那么方便的工具,怎么办?其实也很简单:diff命令,一行搞定. 新建a.txt文件

  9. 利用COM组件实现对WORD书签处写入值

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Wo ...

  10. Hibernate课程 初探一对多映射4-2 cascade级联属性

    1 级联属性:hibernate一方和多方设置关联关系,当一方发生相应修改时(见下表),多方不用进行显式修改,也能进行相应修改.   级联在一方和多方xml中都可以设置 属性值 含义和作用 all 对 ...