------- android培训、java培训、期待与您交流! ----------
File类
File是用来操作文件的类,表示文件和目录路径名的抽象表示形式。也就是说File既可以表示具体的文件,也可以表示文件夹,并且这个File对象对应的文件或文件夹在硬盘可能是不存在的。
用来将文件或者文件夹封装成对象
方便对文件与文件件进行操作
File对象可以作为参数传给流的构造函数,此时文件将作为流的起点或终点
File类常见方法:
1,创建。
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
和输出流不一样,输出流对象一建立创建文件。而且文件已经存在,会覆盖。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
File的构造函数,有四种方式创建File对象。
//创建File对象 public static void consMethod() { //将a.txt封装成file对象。可以将已有的和为出现的文件或者文件夹封装成对象。 File f1 = new File("a.txt"); File f2 = new File("c:\\abc","b.txt"); File d = new File("c:\\abc"); File f3 = new File(d,"c.txt"); //separator表示分隔符,适用于各个系统,在Windows上表示"\\" File f4 = new File("c:"+File.separator+"abc"+File.separator+"zzz"+File.separator+"a.txt"); }
只创建一个File对象,它在硬盘上是不存在在的,这时需要调用createNewFile,mkdirs来创建文件或目录。
public static void method_2() throws IOException { //此时f文件在硬盘上不存在,f只表示一个抽象路径 File f = new File("file.txt"); //在硬盘上创建f文件 sop(f.createNewFile()); File dir = new File("abc\\kkk\\a\\a\\dd\\ee\\qq\\aaa"); //创建多级文件夹 sop("mkdir:"+dir.mkdirs()); }
2,删除。
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回false。
void deleteOnExit();在程序退出时删除指定文件。
3,判断。
boolean exists() :文件是否存在.
isFile():判断是否为文件
isDirectory();判断是否为文件夹
isHidden();测试此抽象路径名指定的文件是否是一个隐藏文件。
isAbsolute();测试此抽象路径名是否为绝对路径名。
4,获取信息。
getName():返回由此抽象路径名表示的文件或目录的名称。
getPath():将此抽象路径名转换为一个路径名字符串。
getParent(): 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
。
getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
long length() 返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。
public static void method_4() { File f = new File("file.txt"); //返回创建f时的路径就,即相对路径 sop("path:"+f.getPath()); //返回绝对路径 sop("abspath:"+f.getAbsolutePath()); sop("parent:"+f.getParent()); //该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。 //如果相对路径中有上一层目录那么该目录就是返回结果。 }
list方法
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
public static void listDemo() { File f = new File("c:\\abc.txt"); String[] names = f.list();//调用list方法的file对象必须是封装了一个目录。该目录还必须存在。 for(String name : names) { System.out.println(name); } }
listFiles方法
返回一个抽象路径数组,这些路径名表示才抽象路径表示的目录中的文件
File dir = new File("c:\\"); File[] files = dir.listFiles(); for(File f : files) { System.out.println(f.getName()+"::"+f.length()); }
listFiles中可以传入一个过滤器,这时只有符合过滤条件的文件会被返回。
String[] arr = dir.list(new FilenameFilter() { //accept用于判断文件是否符合条件 public boolean accept(File dir,String name) { //只有bmp格式文件会被返回 return name.endsWith(".bmp"); } });
递归
可以理解为函数自己调用自己。
注意:递归时一定要明确结束条件。
应用场景:
当某一功能要重复使用时。
通过方法toBin来演示,toBin的作用获取num的二进制,这就要不断的除以2。在方法内部调自己,直到num除以2为0。调用sop方法打印每次num除以2的余数,不过要调用完toBin方法后才执行,所以首先打印在递归中最后被调用的toBin方法中数据。
public static void toBin(int num) { if(num>0) { toBin(num/2); System.out.println(num%2); } }
截图中方法toBin自己调用自己,直到最后条件终止不再调用,此时会依次返回,执行toBin中的剩余部分。
列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下所有内容。
package itcast.heima; import java.io.File; public class FileDemo3 { public static void main(String[] args) { File f = new File("D:\\QQ"); showDir(f,0); } //此处用于标示每一级目录,每增加一级,增加一个"--" public static String getLevel(int level){ StringBuilder sb = new StringBuilder(); sb.append("|"); for(int i=0;i<level;i++){ sb.append("--"); } return sb.toString(); } public static void showDir(File file,int level){ //首先打印本级目录 System.out.println(getLevel(level)+file.getName()); level++;//目录级别自增 //将文件夹中的文件(也包括文件夹)放入数组中 File[] files = file.listFiles(); for(File f:files){ //判断f是否为文件夹 if(f.isDirectory()) { //如果是文件及,继续调用自己 showDir(f,level); } else System.out.println(getLevel(level)+f); } } }
相关推荐
day01_Object类、常用API ...day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、序列化流、Files day11_网络编程 day12_函数式接口 day13_Stream流、方法引用 Java基础小节练习题答案
day08_File、递归、FileFilter2
Java__递归算法.mp4
JAVA_SQL递归树形,用递归算法结合数据库对J2EE实现树结构
tsp递归程序实现(Java)
由于考虑到实现方法上的局限(采用线程递归轮循扫描的方式),我仅仅是实现了这个功能,其它细节都未处理,有兴趣的可以自己去改进。局限:对于上百、上千的文件同步速度可以接受,但是如果同步数量上十万、百万,问题...
}}练习四:多级文件夹的创建描述:在D盘下创建一个名为ccc的文件夹,要求如下:1.ccc文件夹中要求包含bbb子文件夹2.bbb子文件夹要求包含aaa文件夹答
递归图工具和递归量化分析指标对复杂系统的分析
MySql建表语句 博文链接:https://lionkingzw-hotmail-com.iteye.com/blog/254023
java代码统计_递归
Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE程序 递归Java SE...
Java数组排序总结(冒泡_选择_插入_希尔)__递归算法的复杂度,实用
test3_1_递归函数判断回文.py
一个很全面的二叉树遍历算法,其中包括递归,非递归,广度遍历,输入,输出。
DFT_2_L_通用递归分解算法GRFA DFT_2_L_通用递归分解算法GRFA
VMD是一种自适应、完全非递归的模态变分和信号处理的方法。
用递归方法遍历所有文件夹用递归方法遍历所有文件夹用递归方法遍历所有文件夹用递归方法遍历所有文件夹用递归方法遍历所有文件夹
java递归实现斐波那契数列,实现n阶乘,实现1+2+3+...+n求和
用java语言编写的递归下降语法分析器用java语言编写的递归下降语法分析器用java语言编写的递归下降语法分析器
一维信号生成对应递归图,用于分类,识别,特征提取