1.本节笔记:
文件的操作包io
------------------------【File类】---------------------------
在java中,不管是文件还是文件夹都是叫做File对象
File类 它是属于java.io.File类,用于表示文件(目录)
File类只用于表示文件(目录)的信息(名称/大小等),不能用于文件内容的访问。1.isFile 判断是否是文件
2.isDirectory 判断是否是目录(文件夹)
3.isHidden判断是否是隐藏文件
4.exists 判断所关联的文件是否存在
5.createNewFile 创建一个文件
6.mkdir 创建一个文件夹
7.getPath 获得文件的路径
getName 获得文件名
getParent是获得文件的上一次父目录的名字(父路径)8.length获得文件长度,以字节为单位
9.lastModified获得文件的最后修改时间 返回类型为long
10.delete删除指定路径的文件(不能删除不能为空的文件夹)
11.list 获得文件夹下面所有文件的名字
listFile 是获得文件夹下面的所有文件对象12.listRoots获得当前系统的盘符
【递归打印某个文件夹内所有路径 删除某个文件夹内所有txt文档 求指定位数上的斐波拉契数列
package com.zking.test; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; /** * File类 1.File类隶属与java.io包,必须导包 2.File是用来描述电脑中的文件(文件和文件夹) 3.怎么通过File类来构建一个文件 * 通过File类提供的构造函数 new File(String filePath); */ public class FileDemo { public static void main(String[] args) throws Exception { // 使用File类定位到D:\\dengyangkang.txt这个文件 File file = new File("D:\\dengyangkang1.txt"); System.out.println(file);//D:\dengyangkang.txt // 通过File类构造一个文件后,判断是否存在? /** * File判断功能 */ System.out.println(file.exists());//false // 判断file对象中的文件路径是否一个文件 File file = new File("D:\\dengyangkang.txt"); System.out.println(file.isFile());//true // 判断file对象中的文件路径是否是一个文件夹 File file = new File("D:\\Zking"); System.out.println(file.isDirectory()); // 判断一个文件是否为隐藏文件??? File file = new File("D:\\dengyangkang.txt"); System.out.println(file.isHidden()); /** * File创建功能 */ File file = new File("D:\\ty.txt"); if(!file.exists()) {//如果这个文件不存在 // //创建 createNewFile(); file.createNewFile(); // } // 创建文件夹 File file = new File("D:\\sb"); if(!file.exists()) { //创建文件夹mkdir mk make file.mkdir(); // } // mkdirs File file = new File("D:\\py\\yg\\tq\\hh"); if(!file.exists()) { file.mkdirs(); // } /** * 删除功能 delete 删除一个文件 如果删除一个文件夹时,必须时空 否则无法删除 */ File file = new File("D:\\dengyangkang.txt"); file.delete(); File file = new File("D:\\sb"); file.delete(); /** * File的获取功能 */ // File file = new File("D:\\ty.txt"); // 获取文件的大小 System.out.println("文件大小: " + file.length()); // // 获取文件的绝对路径 System.out.println("文件的绝对路径: " + file.getAbsolutePath()); // // 获取文件的路径 System.out.println("文件的路径: " + file.getPath()); // // 获取文件的名称 System.out.println("文件的名称: " + file.getName()); // 获取文件的最后修改时间1642315074993 //距离1970年1月1日的毫秒值 System.out.println("最后修改的时间: " + file.lastModified()); long time = file.lastModified(); // //通过util包中的Date对象进行转换 Date date = new Date(time); System.out.println(date.toLocaleString()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); System.out.println(sdf.format(date)); //获取某一个文件的父路径(上一级目录) //D:\\zking\\T281\\1.txt //父级路径D:\\zking\\T281 // File file2 = new File("D:\\Zking\\T281\\1.txt"); // System.out.println(file2.getParent()); /** * 扩展获取功能 */ //需求:获取电脑上所有的磁盘根目录 //lisRoots 获取所有的磁盘根目录 返回类型: File数组 File[] files = File.listRoots(); for (File file3 : files) { //System.out.println(file3.getPath()); if(!file3.getPath().equals("H:\\")) { System.out.println(file3.getPath()); } } //获取某目录下的所有文件的名称 File file = new File("D:\\zhangyou"); String[] fileNames = file.list(); for (String fname : fileNames) { System.out.println(fname); } //获取某目录下的所有文件对象listFiles File file = new File("D:\\zhangyou"); File[] files = file.listFiles(); for (File file2 : files) { System.out.println("名称"+file2.getName()+"\t路径: "+file2.getPath()); } /** * File类中常用的操作方法 * * 构造方法 new File(String filePath); * * 普通方法: * 1.判断方法 * exists 判断是否存在 * isFile 判断是否时文件 * isHidden 判断是否是隐藏文件 * isDirectory 判断是否是文件夹 * * 2.新建功能 * createNewFile 创建新文件 有异常 * mkdir 创建单个文件夹 * mkdirs 创建多级文件夹 * * 3.删除功能 * delete 删除文件,删除文件夹必须是空的 * * 4.获取功能 * length 获取长度(字节) * getPath 文件的路径 * getAbsolutePath 文件的绝对路径 * getName 文件的名称 * lastModified 最后修改的时间 * listRoots 磁盘根目录 * list 某目录下的所有文件以及文件夹名称 * listFiles 某目录下所有的文件对象(文件以及文件夹) */ } }
2.递归方式查找文件与删除
package com.zking.test; import java.io.File; /** * 如果查找某目录下的所有文件 * 提供的路径是磁盘的根目录,涉及到系统文件是没有权限进行访问。 * 返回一个null,而null.getName 空指针。 * @author Administrator * */ public class FileDemo2 { //得到某目录下的所有文件信息 public static void printFileAll(File file) { //判断参数file对象是否是一个文件还是一个文件夹 if(file.isFile()) {//这个file是一个文件 System.out.println(file.getPath()); }else if(file.isDirectory()) {//这个file是一个文件夹 //获取这个文件夹下所有的文件信息 File[] files = file.listFiles(); //过滤掉隐藏的系统文件 if(files == null) { return; } //foreach遍历得到所有的文件信息 for (File file2 : files) { //判断每个file2是文件还是文件夹 //递归调用本身 printFileAll(file2); } } } //删除某目录下的所有txt.文件 public static void delFileAllByTxt(File file) { //判断是否是文件还是文件夹 if(file.isFile()) {//文件 //System.out.println(file.getPath()); //需求:只需要删除.txt文件 String fileName = file.getName(); //判断一个文件中是否包含. int index= fileName.lastIndexOf("."); String hz = ""; if(-1!=index) { //截取扩展名 hz = fileName.substring(index); } //System.out.println(hz); if(".txt".equals(hz)) { file.delete(); } }else if(file.isDirectory()) {//文件夹 //获取这个文件夹下所有的文件信息 File[] listFiles = file.listFiles(); //遍历 for (File file2 : listFiles) { //调用自己 delFileAllByTxt(file2); } } } public static void main(String[] args) { //给定一个文件夹的路径D:\\zz //打印出所有文件信息不包括文件夹 File file = new File("D:\\"); //获取所有的文件 printFileAll(file); // delFileAllByTxt(file); //获取该目录下所有文件信息 File[] files = file.listFiles(); for (File file2 : files) { if(file2.isFile()) {//file2必须是一个文件才打印 System.out.println(file2.getPath()); }else if(file2.isDirectory()){//文件夹 System.out.println("\t文件夹的名称: "+file2.getPath()); File[] file3 = file2.listFiles(); for (File file4 : file3) { System.out.println("\t文件夹 "+file2.getName()+"里面的文件有: "+file4.getPath()); } } } } }