java基础复习(二十一)

FIle类递归文件

从键盘接收一个文件夹路径,统计该文件夹大小

从键盘接收一个文件夹路径

  • 创建键盘录入对象
  • 定义一个无限循环
  • 将键盘录入的结果存储并封装成File对象
  • 对File对象判断
  • 将文件夹路径对象返回

统计该文件夹大小

  • 定义一个求和变量
  • 获取该文件夹下所有的文件和文件夹listFiles
  • 遍历数组
  • 判断是文件就计算大小并累加
  • 判断是文件夹递归调用
/*
从键盘接收一个文件夹路径
1.返回值类型File
2.
*/

public static File getDir(){
    //1.创建键盘录入对象
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个文件夹路径");
    
    while(true) {
        String line = sc.nextLine();
        File dir = new File(line);
        if(!dir.exists()){
            System.out.println("您录入的文件夹路径不存在,请输入一个文件夹路径");
        }else if(dir.isFile){
            System.out.println("您录入的是文件路径,请输入一个文件夹路径");
        }else{
            return dir;
        }
    }
}

/*
统计该文件夹大小
1.返回值类型long
2.参数列表File dir
*/
public static void getFileLength(File dir){
    long len = 0;
    File[] subFiles = dir.listFiles();
    for(File subFile : subFiles){
        if(subFile.isFile()){
            len = len +subFile.length();
        }else{
            len = len + getFileLength(dir);//递归调用
        }
    }
}

需求2:从键盘接收一个文件夹路径,删除该文件夹

/*
删除该文件夹
分析:
1.获取该文件夹下的所有文件和文件路径
2.遍历数组
3.判断是文件直接删除
4.如果是文件夹,递归调用
5.循环结束后把空文件夹删除
*/
public static void deleteFile(File dir){
    //1.获取该文件夹下的所有文件和文件夹
    Fiel[] subFiles = dir.listFiles();
    //2.遍历数组
    for (File subFile : subFiles){
        if(subFile.isFile()){
            subFile.delete();
        }else{
            deleteFile(subFile);
        }
    }
}

从键盘接收两个文件夹路径把其中一个文件夹拷贝到另一个文件夹中

把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

分析:

1.在目标文件 夹中创建原文件夹

2.获取原文件夹中所有的文件和文件夹,存储在FIle数组中

3.遍历数组

4.如果是文件,就用io流读写

5.如果是文件就基于递归调用

/*
1.返回值类型void
2.参数列表File src ,File dest
*/
public static void copy(File src,File dest){
    //1.在文件夹中创建创建原文件夹
    File newDir = new File(dest,src.getName());
    newDir.mkdir();
    //2.获取原文件夹中所有的文件和文件夹,存储在File数组中
    File[] subFiles = src.listFiles();
    //3.遍历数组
    for(subFile : subFiles){
        if(subFile.isFile()){
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
            BufferedOutputStream bos = new BufferedOutputStream(new File(new Dir))
        }
    }
}

File类按层级打印

递归练习 斐波那契数

1.用数组来做

2.用递归来做

集合练习

约瑟夫环

数到3和3的倍数就拉出去杀了

//获取幸运数字
//1.返回值类型int
//2.参数列表 int num
public static int getLucklyNum(int num){
    ArrayList<Integer> list = new ArrayList<>();
    for(int i = 1; i<=num; i++){
        list.add(i);
    }
    int count = 1;
    for(int i =0;list.size() !=1;i++){
        
    }
}

本文链接:

https://heyzen.club/index.php/J/270.html
1 + 6 =
快来做第一个评论的人吧~