菜鸡学习day19
package day19;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.logging.FileHandler;
/*
File类
(文件和目录的抽象表示形式,将文件和文件夹封装为一个File)
操作文件和文件夹
是一个与系统无关的类
file文件 irectory文件夹 path路径
静态方法
static String pathSeparator 与系统有关的路径分隔符 字符串
static char pathSeparatorChar 与系统有关的路径分隔符
static String separator 与系统有关的默认名称分隔符 字符串
static char SeparatorChar 与系统有关的默认名称分隔符
路径
1.绝对路径:是一个完整的路径,从盘符开始的路径 d:\\xxxx
2.相对路径:简化的路径,相对于当前项目的根目录,省略当前项目的根目录,123.txt
注:不区分大小写
反斜杠是转移字符,\\相当于一个\
构造方法
1. File(String pathname)通过将给定路径名字符串转换为抽象路径名来创建一个新File实例
String pathname为路径名称字符串,可以以文件/文件夹结尾,相对/绝对路径,存在/不存在
创建File类对象,只是把字符串路径封装为File对象,不考虑路径的真假
2. File(String parent,String child)创建一个File实例
parent父路径 child子路径
3. File(File parent,String child)
父路径为File类型,可以使用类的方法
相对路径默认在项目同文件夹下?
常用方法
1.获取功能的方法
pubic String getAbsolutePath()获取构造方法中传递的绝对路径
pubic String getPath()将此file转换为路径字符串
pubic String getName()返回由此file表示的文件或目录名称(结尾部分)
pubic long length()返回文件大小,若不存在或为文件夹,返回0
2.判断功能的方法
public boolean exists()判断路径是否存在
public boolean isDirectory()判断路径是否以文件夹结尾
public boolean exists()判断路径是否以文件结尾(不存在都是false,否则两个方法结果互斥)
3.创建删除功能的方法
public boolean createNewFile()当且仅当文件不存在时,创建一个新的空文件
声明抛出了IOExceotion异常,需要处理/抛出
public boolean delete()删除由此file表示的文件或目录
public boolean mkdir()创建单级空文件夹
public boolean mkdirs()创建单级/多级空文件夹
File类遍历(文件夹)目录功能
public String【】List()返回一个String数组,表示file的目录
获取目录中所有文件/夹存储到String数组中
public File【】ListFiles()返回一个File数组,表示file的目录
注:若路径不存在/不是目录,发生空指针异常
递归
直接递归a-a
间接递归b-c-b
注:1.必须有条件限定,否则栈内存溢出
2.递归次数不能太多,否则栈内存溢出
3.构造方法禁止递归,编译报错(船舰对象使用,产生无数个对象)
递归求和使内存中存在多个main和sum,效率低下
*/
public class D1901 {
public static void main(String[] args) throws IOException {
jingTai01();
gouZao01();
System.out.println(diGui01(10));//求和55
System.out.println(diGui02(5));//阶乘120
File filesss = new File("D:\\IDEA\\basic-code");
lianXi01(filesss);
}
private static void jingTai01(){
String pathSeparator = File.pathSeparator;
System.out.println(pathSeparator);//路径分隔符 win分号;linux冒号:
String separator = File.separator;
System.out.println(separator);//默认名称分隔符 win\,linux/
}
private static void gouZao01() throws IOException {
//File(String pathname)
File file1 = new File("a.txt");
System.out.println(file1);//a.txt
File file2 = new File("d:\\","a.txt");
System.out.println(file2);//d:\a.txt
//获取功能的方法
System.out.println(file1.getAbsolutePath());//D:\IDEA\basic-code\a.txt
System.out.println(file1.getPath());//a.txt
System.out.println(file1.getName());//a.txt
System.out.println(file1.length());//0
//判断功能的方法
System.out.println(file1.exists());//false
//创建删除功能的方法
//boolean b1 = file1.createNewFile();
//System.out.println(b1);//true
boolean b2 = file2.mkdir();
System.out.println(b2);
System.out.println(file1.getAbsolutePath());
//File类遍历(文件夹)目录功能
File file = new File("D:\\IDEA\\basic-code\\day19\\src");
System.out.println(Arrays.toString(file.list()));
}
private static int diGui01(int n) {//递归计算1-n的和
if(n == 1){//保证有限次数
return 1;
}
return n +diGui01(n - 1);
}
private static int diGui02(int n) {
if(n == 1){
return 1;
}
return n * diGui02(n - 1);
}
private static int lianXi01(File dir) {//总是有点不太对。。
//System.out.println(dir);
File[] files = dir.listFiles();
if(files == null){//百度告诉我要判断隐藏空文件夹,否则空指针异常
System.out.print("");
return 0;
}
for(File f : files){
if(dir.isDirectory()){
lianXi01(f);
}
else{
System.out.println(f);
//souSuo01(f);//搜索遍历java文件
}
}
return 0;
}
private static void souSuo01(File f){
String str = f.toString();
boolean b = str.endsWith(".class");
if(b){
System.out.println(f);
}
}
}