Java—递归
递归
1. 概述
方法中调用当前方法
2. 递归需要注意的事项
递归次数不能过多,否则内存溢出
3. 案例
3.1 获取指定目录下的文件名
public class AllDirPath {
/*
* 递归打印所有子目录中的文件路径
*/
public static void main(String[] args) {
// 1. 获取要查询的目录,判断该文件是否存在
File file = new File("e:/培训");
// 2. 存在,获取该目录下所有的文件
// 3. 判断此文件是否为文件夹;是的话继续第2步,直到结束
// 所以2和3开始需要递归;把其封装到一个方法中
getAllFile(file);
}
private static void getAllFile(File file) {
// 2. 存在,获取该目录下所有的文件
// 3. 判断此文件是否为文件夹;是的话继续第2步,直到结束
if(file.exists()){
File[] listFiles = file.listFiles();
for(File f: listFiles){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f.getName());
}
}
}else{
System.out.println("要查询的目录还不存在,请先去创建!");
}
}
}
3.2 删除指定目录
public class DelDir {
public static void main(String[] args) {
// 获取指定要删除目录
File file = new File("e:/peixun");
deleteDir(file);
}
public static void deleteDir(File file) {
// 先进行判断是否为文件夹
if(file.isDirectory()){
File[] listFiles = file.listFiles();
for (File tempFile : listFiles) {
deleteDir(tempFile);
}
// 直至文件夹为空时,删除文件夹
boolean delete = file.delete();
System.out.println(file.getName() + "..." + delete);
}else{
// 不是文件夹直接删
boolean delete = file.delete();
System.out.println(file.getName() + "..." + delete);
}
}
}
Java—递归的更多相关文章
- Java递归列出目录下全部文件
Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...
- Java 递归调用 recursive 给一个参数 返回一大堆
需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...
- JAVA 递归实现从n个数中选取m个数的所有组合
这周Java课程有个小作业:Java递归实现从n个数中选取m个数的所有组合 代码如下: //其中 n 取 1,2,3,4,5 五个数, m 取 3 package javaText; public c ...
- JAVA递归、非递归遍历二叉树(转)
原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { priva ...
- 慎用Java递归调用
总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...
- Java递归实现阶乘
import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner ...
- java递归删除目录下所有内容
java递归删除目录下所有内容 private static boolean deleteDir(File dir) {if (dir.isDirectory()) { String[] ...
- JAVA递归实现线索化二叉树
JAVA递归实现线索化二叉树 基础理论 首先,二叉树递归遍历分为先序遍历.中序遍历和后序遍历. 先序遍历为:根节点+左子树+右子树 中序遍历为:左子树+根节点+右子树 后序遍历为:左子树+右子树+根节 ...
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
目录 1 问题描述 2 解决方案 2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...
- Java递归输出指定路径下所有文件及文件夹
package a.ab; import java.io.File; import java.io.IOException; public class AE { public static void ...
随机推荐
- CentOS7 系统安全的设置
一.禁止root远程直接登录 # 创建普通用户,并设置密码 useradd bluceli #新建账户 passwd bluceli #设置密码 # 不允许root远程直接登录 vim /etc/ss ...
- 解决SpringBoot 定时计划 quartz job 任务重复执行多次(10次)
上一篇:SpringBoot多任务Quartz动态管理Scheduler,时间配置,页面+源 设置了多个 任务,本应该是各司其职的,任务调用多线程处理任务,but这个定时任务竟然同时跑了10次???如 ...
- MeteoInfoLab脚本示例:AMSR-E卫星数据投影
AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读 ...
- MeteoInfoLab脚本示例:TOMS HDF数据
TOMS (Total Ozone Mapping Spectrometer)数据是全球臭氧观测.脚本程序: #Add data file folder = 'D:/Temp/hdf/' fns = ...
- Oracle使用技巧
Edit/Undo Ctrl+ZEdit/Redo Shift+Ctrl+ZEdit/PL/SQL Beautifier Ctrl+W (自定义) Shift+Home 选择光标位置到行首 Shift ...
- vi/vim系统编辑命令使用技巧
01前言 在Linux系统中会有很多的文件信息,这些文件的内容如果需要编辑,就必须借助vi或vim编辑命令. vi是Linux命令行界面下的重要文字编辑器.vim是vi命令的增强版. [语法格式] v ...
- 互不侵犯(洛谷P1896)
题目:在N*N的棋盘里面放k个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入输出:输入N,K,输出有几种放置方法. ...
- Java NIO:选择器
最近打算把Java网络编程相关的知识深入一下(IO.NIO.Socket编程.Netty) Java NIO主要需要理解缓冲区.通道.选择器三个核心概念,作为对Java I/O的补充, 以提升大批量数 ...
- docker将镜像推送到阿里云
1.背景 在实际生产中我们会经常把镜像推送到云端仓库......... 下面看具体操作 第一步:登录阿里云创建仓库 第二步:在docker上登录阿里云仓库 第三步:推送镜像到阿里云 第四步:在公网上查 ...
- matplotlib 饼状图
import matplotlib.pyplot as plt import matplotlib as mpl # 支持中文 plt.rcParams['font.sans-serif'] = [' ...