---恢复内容开始---
IO操作
把内存上的数据写到可持久化存储的设备上叫输出(Output)
把持久存储数据的设备写到内存上叫输入(Input)
File类
把文件和文件夹都封装成文件对象

File类获取对象

1 import java.io.File;
2
3 public class Demo02 {
4
5 public static void main(String[] args) {
6 File f = new File("E:\\java学习\\6月5号");
7 System.out.println(f.getAbsolutePath());
8
9 }返回了
E:\\java学习\\6月5号
import java.io.File;
public class Demo02 {
public static void main(String[] args) {
File f = new File("E:\\java学习\\6月5号");
System.out.println(f.getName());
}返回了6月5号
1 import java.io.File;
2
3 public class Demo02 {
4
5 public static void main(String[] args) {
6 File f = new File("E:\\java学习\\6月15号");
7 System.out.println(f.length());
8
9 }获取了文件的大小 4096
对文件和文件夹的操作

public static void main(String[] args) throws IOException {
File f = new File("E:\\java学习\\6月15号\\b");
f.createNewFile();
}
会创建一个空文本

看一下这个文件或者目录在不在,返回boolean
1 public static void main(String[] args) throws IOException {
2 File f = new File("E:\\java学习\\6月15号\\b");
3 System.out.println(f.exists());
4
5 }
1 public class Demo02 {
2
3 public static void main(String[] args) throws IOException {
4 File f = new File("E:\\java学习\\6月15号\\b\\a");
5 f.mkdirs();
6
7 }创建多级目录文件夹,用mkdirs
listFiles()方法

1 public static void main(String[] args) throws IOException {
2 File f = new File("E:\\java学习\\6月15号");
3 String[] str = f.list();
4 for(String s:str){
5 System.out.println(s);
6 }
7
8 }显示此目录中文件和文件夹

1 public static void main(String[] args) throws IOException {
2 File f = new File("E:\\java学习\\6月15号");
3 File[] str = f.listFiles();
4 for(File s:str){
5 System.out.println(s);
6 }
7
8 }显示路径和文件,文件夹

注意:在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
文件过滤器
获得一个目录下的所有文件再进行筛选


package com.orcale.demo01;
import java.io.File;
import java.io.FileFilter;
public class MFile implements FileFilter{
过滤器方法
public boolean accept(File pathname) {
// TODO 自动生成的方法存根
String str = pathname.getName();
boolean flag = str.endsWith(".png"); 把获取到的文件对象结尾是.png的放到数组中去 return flag;
}
}
1 public static void method02(File f){
2 File[] f1 = f.listFiles(new MFile());
3 for(File f2:f1){
4 System.out.println(f2);
5 }
6 }
8 }
递归
自己调用自己,分为2种,直接递归和间接递归
直接递归就是自己调用自己的方法
间接递归是,A调用B,B调用C
计算1-n之间的乘积,使用递归完成
public static int method3(int n){
if(n==1){
return 1;
}
return n*method3(n-1);
}
}输出结果:System.out.println(method3(5));
注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
1 public static void method04(File f){
2 File[] f1 = f.listFiles();
3 for(File f2:f1){
4 if(f2.getName().endsWith("docx")){ 先判定结尾,让递归一次调用
5 System.out.println(f2);
6 }
7 if(f2.isDirectory()){
8 method04(f2);
9 }
10 }
11 }
来源:https://www.cnblogs.com/wangrongchen/p/9196222.html