java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量
package com.swift.kuozhan; import java.io.File;
import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印(包括所有子文件夹的文件)。*/ public class kuaozhan1 { public static void main(String[] args) { File dir = new File("c:/");
if(!dir.exists()) {
throw new RuntimeException("该文件夹不存在");
}
get200(dir, 0);
} private static void get200(File dir, int length) {
if(!dir.exists()) {
throw new RuntimeException("该文件夹不无访问权限");
}
for (int i = 0; i < length; i++)
System.out.print("\t");
System.out.println(dir);
File[] files = dir.listFiles(new FileFilter() { @Override
public boolean accept(File pathname) {
if (pathname.isDirectory())
return true;
if (pathname.isHidden())
return false; if (pathname.length() / 1024 < 200)
return true;
return false;
} }); for (File file : files) {
if (file.isDirectory()) {
get200(file, length + 1);
} else {
for (int i = 0; i < length; i++)
System.out.print("\t");
System.out.println("\t" + file);
}
}
}
}
统计文件夹中(不包含子文件夹)文件大于10byte的文件数量并删除这些文件
package com.swift.base; import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; /*训练知识点
1.File对象的删除
2.文件判断功能
3.文件的大小
4.listFiles 训练描述
获取指定路径的文件对象
如果文件对象存在且是文件夹,输出文件夹下(不包含子文件夹)文件大小大于10的文件个数及大小大于10文件的名称
如果大小大于10的文件大于1,根据键盘录入选择是否删除这些文件
如果大小大于10的文件小于1,控制台提示没有文件大于10 操作步骤描述
1.使用File类的构造方法创建文件对象
2.判断该文件是否存在且是文件夹,如果是:
a).获取文件夹下所有的文件对象
b).创建集合来存放需要删除的文件对象
c).遍历所有文件夹下所有的文件对象
i).如果文件对象是文件且文件的大小大于10就添加文件到集合中
d).如果集合中的元素大于1:
i).输出集合中元素的个数及所有集合中所有的元素
ii).提示是否进行删除
iii).如果输入删除,遍历集合中所有的file对象进行删除,并提示**文件已经删除了
e).输出提示文件夹下没有大小大于10的文件对象*/ public class BaseKnowledge5 { public static void main(String[] args) { File dir=new File("c:/abc");
if(dir.exists()&&dir.isDirectory()) {
File[] files = dir.listFiles(new FileFilter() { @Override
public boolean accept(File pathname) {
if(pathname.isDirectory())
return false;
if(pathname.length()>10)
return true;
return false;
}}); List<File> list=new ArrayList<>();
for(File file:files) {
list.add(file);
}
if(list.size()>1) {
System.out.println(list.size());
for(File file:list) {
System.out.println(file);
}
Scanner scan =new Scanner(System.in);
System.out.println("请输入是否删除? 回答 删除 和 不删除");
String str=scan.nextLine();
if("删除".equals(str)) {
for(File file:list) {
file.delete();
}
System.out.println("文件已删除");
}
}else {
System.out.println("没有大于10的文件");
} }
} }
统计多层文件夹下文件和文件夹的数量
package com.swift.Test; import java.io.File; /*训练描述 要求:获取指定路径下文件及文件夹的个数,包含子目录中的文件及文件夹
步骤:
1. 指定要打印的目录File对象
2. 调用getFileAll()方法
2.1 获取指定目录中的所有File对象
2.2 遍历得到每一个File对象
2.3 判断当前File 对象是否是目录
判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法
判断结果为false,说明是文件,打印文件的路径*/ public class DemoFile { public static int dirNums;
public static int fileNums; public static void main(String[] args) { File dir = new File("c:/abc");
getFileAll(dir,0);
System.out.println("文件夹的数量是:"+dirNums);
System.out.println("文件的数量是"+fileNums); } private static void getFileAll(File dir,int deep) {
dirNums++;
for(int i=0;i<deep;i++) {
System.out.print("\t");
}
System.out.println(dir);
File[] files=dir.listFiles();
for(File file:files) {
if(file.isDirectory()) {
getFileAll(file,deep+1);
}else {
for(int i=0;i<deep;i++) {
System.out.print("\t");
}
fileNums++;
System.out.println("\t"+file);
} }
} }
统计已知类型的数量
package com.swift.Test; import java.io.File;
import java.util.HashMap;
import java.util.Map; /*已知一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数
注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
用个数作为value,放入到map集合中,并用两种方式遍历map集合
例如:
doc 的类型的文件有 3 个
java 的类型的文件有 5 个
txt 的类型的文件有 7 个*/ //第一种情况统计指定类型文件的数量
public class Jinji1 { public static int docNums;
public static int txtNums;
public static int javaNums; public static void main(String[] args) { File dir = new File("c:/abc");
getNums(dir);
System.out.println("doc 的类型的文件有 "+docNums);
System.out.println("java 的类型的文件有 "+javaNums);
System.out.println("txt 的类型的文件有 "+txtNums); } private static void getNums(File dir) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
getNums(file);
} else {
if (file.getName().toLowerCase().endsWith("doc")) {
docNums++;
} else if (file.getName().toLowerCase().endsWith("txt")) {
txtNums++;
} else if (file.getName().substring(file.getName().lastIndexOf(".")+1).equals("java")) {
javaNums++;
}
}
}
} }
统计未知类型的数量
package com.swift.Test; import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner; /*键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数
注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,
用个数作为value,放入到map集合中,并用两种方式遍历map集合
例如:
doc 的类型的文件有 3 个
java 的类型的文件有 5 个
txt 的类型的文件有 7 个*/ //第二种情况统计未知类型文件的数量
public class FileNums { public static void main(String[] args) { File dir=inputDir();
Map<String,Integer> map=new HashMap<>();
getNums(dir,map);
System.out.println(map);
} private static void getNums(File dir,Map<String, Integer> map) { File[] files=dir.listFiles();
for(File file:files) {
if(file.isDirectory()) {
getNums(file,map);
}else {
String name=file.getName();
int n=name.lastIndexOf(".")+1;
name=name.substring(n);
if(!map.containsKey(name)) {
map.put(name, 1);
}else {
map.put(name,map.get(name)+1);
}
}
}
} private static File inputDir() { Scanner scan = new Scanner(System.in);
System.out.println("请输入一个目录");
String dir=scan.nextLine();
File dirF=new File(dir);
if(!dirF.exists()) {
throw new RuntimeException("这个目录不存在!");
}
if(!dirF.isDirectory())
throw new RuntimeException("这不是一个目录!");
return dirF;
} }
层级练习
package com.swift.Test; import java.io.File;
import java.util.Scanner; /*从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
例如:
aaa是文件夹,里面有bbb.txt,ccc.txt,ddd.txt这些文件,有eee这样的文件夹,eee中有fff.txt和ggg.txt,打印出层级来
aaa
bbb.txt
ccc.txt
ddd.txt
eee
fff.txt
ggg.txt*/ public class PringFileCeng { public static void main(String[] args) { File dir=getDir();
traverse(dir,0);
} private static void traverse(File dir,int deep) { for(int i=0;i<deep;i++) {
System.out.print("\t");
}
System.out.println(dir);
File[] files=dir.listFiles();
for(File file:files) {
if(file.isDirectory()) {
traverse(file,deep+1);
}else {
for(int i=0;i<deep;i++) {
System.out.print("\t");
}
System.out.println("\t"+file);
}
} } private static File getDir() { Scanner scan =new Scanner(System.in);
System.out.println("请输入一个目录:");
String str=scan.nextLine();
File dirF=new File(str);
if(!dirF.exists()) {
throw new RuntimeException("这个目录不存在!");
}
if(!dirF.isDirectory()) {
throw new RuntimeException("这不是一个目录!");
}
return dirF;
} }
java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量的更多相关文章
- java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数
File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...
- Java之File与递归
File类的使用和递归思想 File类 概述 文件: 存储数据 文件夹: 管理文件与文件夹 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径 ...
- Java——使用File类递归遍历指定路劲下的所有文件
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- JAVA基础-File类
一.File类概述 File类是文件和目录路径名的抽象表示形式.File类可以理解为一个文件路径或者文件夹路径的JAVA表现形式,而路径又可以分为绝对路径(是一个固定路径,从盘符开始),相对路径(相对 ...
- java 基础 --File
1, 创建文件 File file = new File(path); file.createNewFile(); //如果路径不存在,会抛异常 file.mkdir();//如果路径不存在,返回fa ...
- java基础-File
File类 * File更应该叫做一个路径, 文件路径或者文件夹路径 * 路径分为绝对路径和相对路径 * 绝对路径是一个固定的路径,从盘符开始 * 相对路径相对于某个位置,在eclipse下 ...
- 《OD学hadoop》在LINUX下如何将tar压缩文件解压到指定的目录下
linux下tar命令解压到指定的目录 :#tar zxvf /bbs.tar.zip -C /zzz/bbs //把根目录下的bbs.tar.zip解压到/zzz/bbs下,前提要保证存在/zzz/ ...
- Java基础学习(三) -- OOP的三大特征、向上和向下转型、内部类之详解
面向对象编程(OOP)的三大特征 什么是封装? (1) 把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的类中; (2) "信息隐藏", 把不需要让外界知道的信息隐藏起来 ...
- 22_IO_第22天(File、递归)_讲义
今日内容介绍 1.File 2.递归 xmind:下载地址: 链接:https://pan.baidu.com/s/1Eaj9yP5i0x4PiJsZA4StQg 密码:845a 01IO技术概述 * ...
随机推荐
- (转)使用介质设备安装 AIX 以通过 HMC 安装分区
使用介质设备安装 AIX 以通过 HMC 安装分区 原文:https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72/com.ibm.aix.h ...
- winscp介绍与使用
winscp介绍 WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端.同时支持 SCP 协议.它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑 ...
- ThreadLocal 开启事务
1.ThreadLocal该类提供了线程局部变量 2.分析原理: ThreadLocal内部有一个Map.Map的key是当前线程对象,value是一个Object对象. 模拟该类: public c ...
- Homebrew 配置
使用ruby脚本安装完成homebrew之后, 需要配置三个源以及添加一些环境变量 1. export HOMEBREW_NO_AUTO_UPDATE=true # 不自动检查更新 2. cd $(b ...
- ssh设置别名
通常我们在 Termianl 下用 ssh 链接远程主机的时候,每次都需要输入一长串的用户名加主机地址,是不是觉得很麻烦? 我们知道在 /etc/ssh/ 目录下通常都会有 ssh_config 和 ...
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction [转]
@Html.Action:需要有对应的Action,并且Action方法有返回值.(注:处理完业务逻辑同时,也需要返回所需值) @{Html.RenderAction}:需要有对应的Action,Ac ...
- 为什么document.write()会清空原来的内容
为什么document.write()会清空原来的内容: 可能很多朋友都遇到过这样的情况,那就是使用document.write()函数向网页中写内容的时候,会把文档中的原来的内容给清空,这一点对于初 ...
- centos系统安装mysql
方式一. 通过yum install mysql-server安装mysql服务器.chkconfig mysqld on设置开机启动,并service mysqld start启动mysql服务,并 ...
- kafka brokers配置参数详解
基本配置如下: -broker.id-log.dirs-zookeeper.connect Topic-level配置以及其默认值将在下面讨论. Property Default Descriptio ...
- SAP常用函数
1.获取月末最后一天日期 DATA LAST_DATE TYPE SY-DATUM. CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING day_in = sy- ...