File类,递归
File类
File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。
File类包含
路径 path E:\...
目录 directory 文件夹
文件 file
File类的成员变量
例子:
// 名称分隔符
System.out.println(File.pathSeparator);//win ; linux :
// 路径分隔符
System.out.println(File.separator);//win \ linux /
File类的构造方法
File类构造方法不会检验文件是否存在
创建File对象
例子:
//
File file=new File("e:\\test\\a.txt");
//
File file=new File("e:","a.txt");//灵活性高,
//
File f1=new File("d:\\test");
File file=new File(f1,"a.txt");//灵活性更高
File类的获取
//获取绝对路径
public static void method3(){
//File file=new File("d:\\test\\a.txt");
//File file=new File("src");
File file=new File("abc");
//相对路径走的是本工程路径
System.out.println(file.getAbsolutePath());
}
public static void method4(){
//获取本路径目录名或者文件名
File file=new File("d:\\codetool\\jdk1.8.zip");
System.out.println(file.getName());
//getPath()和toString()一个作用
System.out.println(file.getPath());
//返回文件的长度long(字节数)检测空间大小,不是容量大小
System.out.println(file.length());
}
文件或文件夹的创建删除与测试
public static void methd4() throws IOException{
//创建文件,只能创建文件,不能创建文件夹
File f1=new File("e:\\test\\c");
System.out.println(f1.createNewFile());
}
public static void methd5() throws IOException{
//创建文件夹,只能创建文件夹,不能创建文件
File f1=new File("e:\\test\\d");
System.out.println(f1.mkdir());//单级目录,false
File f2=new File("e:\\test\\d\\aaa.txt");
System.out.println(f2.mkdirs());//多级目录,true
// mkdirs创建多级目录
}
public static void method7(){
//删除文件或文件夹
//直接从硬盘上删除,不走回收站,
//删除需谨慎
//删除目录时,如果目录中有内容,无法直接删除。
//只有将目录中的内容都删除后,保证该目录为空。这时这个目录才可以删除
File file=new File("d:\\test\\aaa.txt");
boolean flag=file.delete();
System.out.println(flag);
}
public static void methd7(){
File f1=new File("e:\\test\\a.txt");
System.out.println(f1.exists());//判断文件或文件夹是否存在
//判断是否是文件
System.out.println(f1.isFile());
//判断是否是文件夹
File f2=new File("e:\\test");
System.out.println(f2.isDirectory()); }
listFiles()方法
例子:
public static void method9(){
File file =new File("e:\\test");
String[] files =file.list();//获取路径下所有的文件或者文件夹的字符串名称
for(String s:files){
File f1=new File(file,s); if(f1.getName().equals("a.txt")){
f1.delete();
} }
}
public static void method10(){
File file =new File("e:\\test");
File[] files =file.listFiles();
for(File s:files){
System.out.println(s);
}
}
结果演示:
e:\test\b.txt
e:\test\c
e:\test\c.TXT
e:\test\d
注意: 在获取指定目录下的文件或者文件夹时必须满足下面两个条件
1,指定的目录必须是存在的,
2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException
文件过滤器
listFiles()方法,空参时,全部显示
有参数时,
FileFilter实现此接口的实例就可过滤文件名
该接口有accept方法
自定义类继承该接口
public class MyFilter implements FileFilter { public boolean accept(File pathname) {
/*String name=pathname.getName().toLowerCase();//先转字符串,再转小写
boolean flag=name.endsWith(".txt");//查找以什么结尾
return flag;*/
//如果是文件夹,则不过滤,加到File数组中
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".xml");
} }
测试类:
public static void main(String[] args) { File file =new File("e:\\test");
File[] files=file.listFiles(new MyFilter());
//listFiles方法在获取路径时调用accept方法,并将路径传入,
//如果该方法返回true,那么该文件对象放入File数组,如果是false,则不放入 //遍历获取到的所有符合条件的文件
for(File f:files){
System.out.println(f);
}
}
递归
递归,指在当前方法内调用自己的这种现象
如:
public void method(){
System.out.println(“递归的演示”);
//在当前方法内调用自己
method();
}
递归参与运行的方法主体不变,而运行的方法的参数变
注意:递归必须要写一个程序的出口,否则程序无意义
递归的代码演示,计算1-n之间的和
public static void main(String[] args) {
System.out.println(a(100)); }
public static int a(int n){
if(n == 1){
return 1;
}
return n + a(n-1);
}
//a(100)=(100+(a(99)=99+a(98)=98+a(97)=......))
递归打印所有目录中的文件路径
public class FileDemo2 {
public static void main(String[] args) {
File file = new File("d:\\test");
getFileAll(file);
}
//获取指定目录以及子目录中的所有的文件
public static void getFileAll(File file) {
File[] files = file.listFiles();
//遍历当前目录下的所有文件和文件夹
for (File f : files) {
//判断当前遍历到的是否为目录
if(f.isDirectory()){
//是目录,继续获取这个目录下的所有文件和文件夹
getFileAll(f);
}else{
//不是目录,说明当前f就是文件,那么就打印出来
System.out.println(f);
}
}
}
}
搜索指定目录中.java文件(包含子目录)
自定类继承FileFilter过滤器接口
public class YourFilter implements FileFilter{ public boolean accept(File pathname) {
//如果是文件夹,则不进行过滤,认为满足条件加到File数组中
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
} }
测试类:
public class Demo05 {
public static void main(String[] args) {
File file=new File("d:\\test");
getAllFile(file);
}
public static void getAllFile(File file){
File[] files=file.listFiles(new YourFilter());
for(File f:files){
if(f.isDirectory()){
getAllFile(f);
}else{
System.out.println(f);
}
}
}
}
File类,递归的更多相关文章
- day23<File类递归练习>
File类递归练习(统计该文件夹大小) File类递归练习(删除该文件夹) File类递归练习(拷贝) File类递归练习(按层级打印) 递归练习(斐波那契数列) 递归练习(1000的阶乘所有零和尾部 ...
- 黑马程序员-File类+递归的简单应用
Java File类 Java.io.File Java文件类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等. File对象代表磁盘中实际存在的文件和目 ...
- File类&递归
File类1.什么是file类Java中处理操作系统文件的类.2.file思想创建一个File对象,代表了操作系统的具体的一个文件(文件,文件夹)然后通过这个File对象就可以操作该文件:删除该文件, ...
- IO流(File类--递归--过滤器--IO字节流--IO字符流--Properties集合--缓冲流--转换流--序列化流--打印流)
一.File类 1.1概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 1.1.1相对路径与绝对路径 相对路径从盘符开始的路径,这是一个完整 ...
- 使用File类递归列出E盘下全部文件
import java.io.File;public class FileListTest { public void tree(File file){ if(file.listFiles()!=nu ...
- Java——使用File类递归遍历指定路劲下的所有文件
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
package cuiyuee; import java.io.File; import java.util.ArrayList; import java.util.List; public clas ...
- File类 递归 获取目录下所有文件文件夹
package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...
- 01 语言基础+高级:1-8 File类与IO流_day08【 File类、递归】
day08[File类.递归] 主要内容 File类 递归 教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类 ...
- 异常、Throwable、finally、File类(十九)
1.异常的概述和分类 * A:异常的概述 * 异常就是Java程序在运行过程中出现的错误.* B:异常的分类 * 通过API查看Throwable * Error * 服务器宕机,数据库崩溃等 * E ...
随机推荐
- AVplayer搭建ftp共享PC端
1.安装FTP服务 2.关闭防火墙 3.添加FTP站点 设置ip时,需要查询本机的ip 本机测试 4.iphone安装AVPlayer,并设置
- sql server 2017安装
下载: 1. 2. 3. 安装步骤: https://www.cnblogs.com/ksguai/p/5869558.html 管理工具: Microsoft SQL Server Manageme ...
- 配置matcaffe 遇到的两个坑
1. 问题 (1) Invalid MEX-file '/root/caffe/matlab/+caffe/private/caffe_.mexa64': /matlab/r2016a/bin/gln ...
- 几种常见的排序算法Java实现总结
public class MySort { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:&q ...
- Get和Post区别,EncType提交数据的格式详解——转自他人博客的
1. get是从服务器上获取数据,post是向服务器传送数据. 2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到.post是通过 ...
- python3.4中自定义wsgi函数,make_server函数报错问题
别的不多说,先上代码 #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_ ...
- [CF 612E]Square Root of Permutation
A permutation of length n is an array containing each integer from 1 to n exactly once. For example, ...
- oracle 空值排序,排在最前面或者最后面
1,排在最前面用order by name nulls first; eg:select t.name,t.code from table t where t.code!='1' order by n ...
- maven课程 项目管理利器-maven 3-5 maven生命周期和插件 4星
本节重点: maven插件的使用 本节主要内容: 1 maven生命周期 2 maven插件的使用 3 零散知识点 1 maven生命周期 maven生命周期主要有三个: a clean 清理项目 ...
- 手把手教你用android studio创建第一个安卓程序加载html5页面(二)
经过上一篇,我们已经可以打开html页面了,但是有很多细节方面的内容我们还需要调整. 打开链接的问题 细心的网友可能已经发现,打开百度页面后,点击顶部的链接,会在手机的浏览器中打开相应的页面,这显然不 ...