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. 使用bootstrap创建上传文件

    1.导入样式,注意顺序 <!-- bootstrap样式 --> <link rel="stylesheet" href="/static/bootst ...

  2. Unable to instantiate receiver xxx.receiver.NetworkReceiver异常

    Unable to instantiate xxxreceiver.NetworkReceiver: 这个异常是之前版本有NetworkReceiver(监听网络变化的),新的版本删除了Network ...

  3. S3C2440 中断相关寄存器小探

    ========================================== 转载时请注明出处和作者联系方式 文章出处:http://blog.csdn.net/longintchar 作者联 ...

  4. 揭秘企业级web负载均衡完美架构

    相信很多朋友对企业级的负载均衡高可用实例非常感兴趣,此篇文章根据成熟的线上环境而写,旨在帮助大家迅速架构一个企业级的负载均衡高可用的web环境. 此系统架构仅映射内网VIP的80及443端口于外网的J ...

  5. mathjax符号

    mathjax公式 \(\delta\): \delta \(\Delta\): \Delta \(\int\): \int \(\iint\): \iint \(\approx\): \approx ...

  6. HDU 4355——Party All the Time——————【三分求最小和】

    Party All the Time Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. ICSharpCode.SharpZipLi 压缩、解压文件 附源码

    http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, ...

  8. 深入.NET框架。

    1.Microsoft.NET框架结构是一个面向网络,支持各种用户终端的开发平台. 2..NET框架的主要内容有CLR,FCL,ADO.NET,XML,ASP.NET,WinForms和WebSeri ...

  9. FormCollection的用法

    FormCollection的用法: 有时候前台抛来的字段太多,在后台一个一个例举出来显得麻烦,而且还容易出错,FormCollection解决了这个烦恼 #region 给商家留言 [HttpPos ...

  10. 实现AB值对换的两种方法

    package com.smbea.demo.exchange; /** * AB对换 * @author hapday * @2017年1月22日 @上午12:36:24 */ public cla ...