File概述
java.io.File类:文件和目录路径名的抽象表示形式。
用来描述电脑中文件,文件夹,以及路径类

常用的3个和File有关的单词:
file:文件
directory:文件夹(目录)
path:路径
File是一个与系统无关的类

File类的3个重载的构造方法
路径:
window系统的目录分隔符是一个\
java中的目录分隔符是:\\或者/
路径的分类:
绝对路径:以盘符开始的路径
例如:D:\\ase\\20170514\\day10
D:\\Work_EE_266\\day10\\src
相对路径:相对于当前项目来说,路径编写的时候可以省略盘符到项目之间的路径
D:\\Work_EE_266\\day10-->src

注意:路劲不区分大小写的
File(File parent, String child)
传递路径,传递 File 类型父路径,字符串类型子路径
好处:父路径是 File 类型,父路径可以直接调用 File 类的方法
File(String parent, String child)
传递路径,传递字符串类型父路径,字符串类型的子路径
好处:单独操作父路径和子路径,使用起来比较灵活,可以把路径单独作为参数传递过来
File(String pathname)
传递路径名:可以写文件夹,也可以写到一个文件
c:\\abc c:\\abc\\Demo.java
路径存不存在都可以创建,路径不区分大小写

 1 public static void main(String[] args) {
 2         /*
 3          * static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
 4          * static char pathSeparatorChar  与系统有关的路径分隔符。
 5          * static String separator  与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
 6          * static char separatorChar  与系统有关的默认名称分隔符。
 7          */
 8         String pathSeparator = File.pathSeparator;
 9         System.out.println(pathSeparator);//路径分隔符 windows 分号; linux 冒号:
10
11         String separator = File.separator;
12         System.out.println(separator);//目录名称分隔符windows 反斜杠\  linux 正斜杠/
13
14         /*
15          * System类中的方法
16          * static String getProperty(String key) 获取指定键指示的系统属性。
17          * file.separator 文件分隔符(在 UNIX 系统中是“/”)
18          * path.separator 路径分隔符(在 UNIX 系统中是“:”)
19          * line.separator 行分隔符(在 UNIX 系统中是“/n”)
20          */
21         System.out.println(System.getProperty("file.separator"));
22         System.out.println(System.getProperty("line.separator"));
23         System.out.println(System.getProperty("path.separator"));
24     }

File类的创建和删除功能
File 类的删除功能
boolean delete()
删除文件或者文件夹,在 File 构造方法中给出
删除成功返回 true,删除失败返回 false(不存在,文件夹中有内容)
删除方法不走回收站,直接从硬盘删除
删除有风险,运行需谨慎

File 创建文件夹功能
boolean mkdir() 只能创建单层文件夹
boolean mkdirs() 既能创建单层文件夹,又能创建多层文件夹
创建的路径也在 File 构造方法中给出
如果文件夹已经存在,不在创建

File 创建文件的功能
boolean createNewFile()
创建的文件路径和文件名,在 File 构造方法中给出
如果文件已经存在,不在创建返回 false
只能创建文件,不能创建文件夹(看类型,不要看后缀)
创建文件夹的路径,必须存在

File类的判断功能
boolean isDirectory()
判断 File 构造方法中封装的路径是不是文件夹
如果是文件夹就返回 true,如果不是文件夹就返回 false
boolean isFile()
判断 File 构造方法中封装的路径是不是文件
boolean exists()
判断 File 构造方法中封装路径是否存在
存在就返回 true,不存在就返回 false

File类的获取功能
String getParent() 返回 String 对象
File getParentFile() 返回 File 对象
获取父路径,返回的是文件末尾的父路径

long length()
返回路径中表示的文件的字节数,文件夹没有大小

String getPath() 将此抽象路径名转换为一个路径名字符串。
和 toString 一样

String getName()
返回路径中表示的文件或者文件夹名
获取路径中最后部分的名字

File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
获取绝对路径

遍历目录的方法list和listFiles
注意事项:
1.被遍历的路径只能是一个目录
2.被遍历的目录必须存在
否则就会抛空指针异常

static File[] listRoots()
获取系统中所有根目录

File[] listFiles()
获取到 File 构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
返回的是目录或者文件的全路径

String[] list()
获取到 File 构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
返回的只有名字

递归
递归:方法自己调用自己
分类:
递归分为两种,直接递归和间接递归。
直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

注意:
1.递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
2.在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
3.构造方法,禁止递归

 1 使用递归计算1-n之间的和
 2       n + (n-1)+ (n-2)+(n-3)+...+1
 3       5 +(5-1)+(4-1)+(3-1)+(2-1)
 4       结束条件:n=1的时候结束
 5       方法自己调用自己目的:获取n-1,获取到n=1的时候结束
 6     public static int DGSum(int n){
 7         //添加结束条件
 8         if(n==1){
 9             return 1;
10         }
11         return n+DGSum(n-1);
12     }
13
14 使用递归计算阶乘
15      private static long DGJC(int n) {
16         //递归的结束条件 n==1
17         if(n==1){
18             return 1;
19         }
20         return n*DGJC(n-1);
21     }
22
23 使用递归计算斐波那契数列
24     private static int fbnq(int month) {
25         //结束条件如果month是1,2直接返回1
26         if(month==1 || month==2){
27             return 1;
28         }
29         //3月以上:兔子数量是前两个月之和
30         return fbnq(month-1)+fbnq(month-2);
31     } 

文件过滤器
文件的过滤器:
需求:遍历hello文件夹,只获取文件夹中的.java结尾的文件
c:\\hello
c:\\hello\\demo.txt
c:\\hello\\Hello.java

在File类中listFiles()方法是遍历文件夹的方法
有两个和 listFiles重载的方法,参数传递的就是过滤器
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
发现方法的参数FileFilter和FilenameFilter是接口
所有我们需要自己定义接口的实现类,重写接口中的方法accept,实现过滤功能

 1 public class FileFilterImpl implements FileFilter{
 2     /*
 3      * 实现过滤的方法:
 4         1.把传递过来的路径pathname,变成字符串
 5             Stirng s  = pathname.toString(); "c:\\hello\\demo.txt"
 6             String s  = pathname.getPaht(); "c:\\hello\\demo.txt"
 7             String s = pathname.getName(); "demo.txt"
 8         2.使用String类中的方法endsWith判断字符串是否以指定的字符串结尾
 9             boolean b = s.endsWith(".java");
10             return b;
11      */
12     @Override
13     public boolean accept(File pathname) {
14         /*String s = pathname.getName();
15         boolean b = s.endsWith(".java");
16         return b;*/
17         return pathname.getName().toLowerCase().endsWith(".java");
18     }
19 }
20 public class FilenameFilterImpl implements FilenameFilter{
21
22     @Override
23     public boolean accept(File dir, String name) {
24         return name.toUpperCase().endsWith(".JAVA");
25     }
26
27 }

断点调试
debug断点调试
f6:逐行执行
f5:进入到方法中
f7:结束方法
f8:跳到下一个断点
watch:捕获

转载于:https://www.cnblogs.com/caigq/p/7049064.html

IO(File 递归)相关推荐

  1. * IO流递归拷贝一个文件夹 按源文件夹格式拷贝

    import java.io.*;/*** IO流递归拷贝一个文件夹 按源文件夹格式拷贝** @author silence*/ public class IoCopy2 {private stati ...

  2. IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹。如果重复不拷贝,可续拷

    import java.io.*;/*** IO流递归拷贝一个文件夹里面的所有文件,到另一个文件夹.如果重复不拷贝,可续拷* @author silence*/ public class IoCopy ...

  3. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

  4. 使用java.io.File操作文件及文件夹

    如果有兴趣了解更多相关内容,可以来我的个人网站看看:eyes++的个人空间 一:File类的概述 java有个io包,java用于操作流的对象都在io包中,io流简单来说就是input和output流 ...

  5. 1-19 HashMap、IO流递归遍历文件实战

    文章目录 1.本篇文章目的 2.需求场景 1)准备员工信息文件 2)需要完成的内容 3.开发工作 1)开发思路分析 2)开发 3)结果 公众号有技能演示视频,大家可搜索添加公众号 taishangco ...

  6. java file_Java IO: File

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下 ...

  7. java.io.file()_Java IO(一):IO和File

    一.IO 大多数的应用程序都要与外部设备进行数据交换,最常见的外部设备包含磁盘和网络.IO就是指应用程序对这些设备的数据输入与输出,Java语言定义了许多类专门负责各种方式的输入.输出,这些类都被放在 ...

  8. 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件

    安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...

  9. java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。

    java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限. 声明 以下是 java.io.File.setExecutab ...

最新文章

  1. Mobile 拨打电话 发送短信
  2. Annotation 的第一个工程
  3. Linux虚拟机最小化安装后转换成图形界面(图文详解)
  4. matlab 随机数权重,MATLAB中加权随机数
  5. django1.4.9 OMserverweb站点管理
  6. [转载]C/C++框架和库
  7. 分类算法之决策树介绍
  8. php怎么实现发送给指定用户,微信小程序 实现模板消息群发、发送给指定用户...
  9. 从零开始入门单片机(一):必会背景知识总结
  10. 信息机房服务器搬迁,医院信息机房搬迁的实施与经验总结
  11. matlab一维插值extrap,matlab一维插值函数
  12. 步道乐跑(最新版本)
  13. 插上U盾计算机无法识别,U盾插入电脑后没反应,网上银行识别不了?
  14. vscode配置maven,settings.json文件
  15. 什么是SysWow64
  16. 2021“创芯中国”集成电路创新挑战赛芯片测试赛项(华南赛区)正式打响
  17. POJ 1753 Flip Game(递归枚举)
  18. Android中全局搜索(QuickSearchBox)详解(一)
  19. PPP 协议及配置解析
  20. 使用MIC进行变量选择

热门文章

  1. Django完整配置settings.py
  2. 女主播还是女主播???
  3. javascript错误处理与调试
  4. php自定义弹窗,自定义弹窗Style样式
  5. qt窗口关闭退出程序_Qt5 窗口关闭信号的响应~
  6. formdata怎么传数组_如何使用formData上传file数组
  7. wait(),notify(),notifyAll()进行了详细的分析介绍
  8. resnet18到resnet152模型pytorch实现
  9. Java学习小程序(7)九九乘法表
  10. hadoop集群中的日志文件