网站建设学那些课程,北京电商网站建设哪家好,怎么开通公司网站,学校网站建设说明一.java.io.File类
作用#xff1a;它的作用是用来表示某个文件或文件夹#xff08;文件夹又称为目录#xff09;
如何用File类的对象表示一个文件或目录的呢#xff1f;
API文档中描述#xff1a;文件和目录路径名的抽象表示形式
解释#xff1a;如果要表示一个文件…一.java.io.File类
作用它的作用是用来表示某个文件或文件夹文件夹又称为目录
如何用File类的对象表示一个文件或目录的呢
API文档中描述文件和目录路径名的抽象表示形式
解释如果要表示一个文件或目录需要指定它的“路径名”
例如要表示Windows操作系统下的D盘Download文件夹下的大学资料.zip
那么可以这样表示 File file new File(d:\\Download\\大学资料.zip)
要表示Windows操作系统下的D盘Download文件夹
那么可以这样表示 File file new File(d:\\Download)
路径分隔符 早期Windows只支持 \ 现在所有平台都支持 /
二.File类的常用方法系列1
public String getName()返回由此File表示的文件或目录的名称
public long length()返回由此File表示的文件的长度。 返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录则返回值是不确定的。
public String getPath()将此File转换为路径名字符串。
public long lastModified()返回File对象对应的文件或目录的最后修改时间毫秒值
三.各种路径问题
路径名词
1绝对路径和相对路径
绝对路径在描述文件或文件夹时从根目录开始导航的路径 对于windows操作系统来说盘符就是根 如d:/Download d:/Download/大学资料.zip 对于linux操作系统来说/ 就是根 /Download
相对路径在描述文件或文件夹下不是从根目录开始导航的路径 例如download/1.txt
相当于谁呢 对于IDEA中JUnit的test方法相对路径是相当于当前的模块 对于IDEA中main方法相对路径是相当于当前的project
2构造路径
在new File()对象时在()中填写的路径。
构造路径可以是相对路径也可以是绝对路径。
3规范路径
如果路径名中出现了..等情况会进行解析
String getPath()获取的是构造路径的值
String getAbsolutePath()获取绝对路径的值
String getCanonicalPath()获取规范路径的值
4File类的常用方法系列3
创建文件和文件夹的方法
public boolean createNewFile() throws IOException创建一个新文件
public boolean mkdir()创建文件夹这个是文件夹只能一个一个创建
public boolean mkdirs()创建文件夹这个是文件夹的多个目录可以一起创建
public Boolean delete()删除文件或文件夹 如果文件夹是非空目录那么是无法删除的。即只能删除空文件夹。
5判断某个File对象代表的文件或文件夹的情况
public boolean exists()此File表示的文件或目录是否实际存在
public boolean isDirectory()此File表示的是否为目录
public boolean isFile()此File表示的是否为文件
如果指定的某个文件或文件夹的路径名后这个文件或文件夹在实际的路径下不存在不影响创建File类的对象。
如果File类对象的代表的文件或文件夹不存在那么它既不是文件夹也不是文件。
6对于文件夹的File对象来说可以进行如下操作
public String[] list()返回一个String数组表示该File目录中的所有的子文件或目录。
public File[] listFiles()返回一个File数组表示该File目录中的所有的子文件或目录
public File[] listFiles(FileFilter filter)返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null则接受所有路径名。否则当且仅当在路径名上调用过滤器的 FileFilter.accept(File pathname)方法返回 true 时该路径名才满足过滤器。如果当前File对象不表示一个目录或者发生 I/O 错误则返回 null。
public String[] list(FilenameFilter filter)返回返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null则接受所有路径名。否则当且仅当在路径名上调用过滤器的 FilenameFilter .accept(File dir, String name)方法返回 true 时该路径名才满足过滤器。如果当前File对象不表示一个目录或者发生 I/O 错误则返回 null。
public File[] listFiles(FilenameFilter filter)返回返回所有满足指定过滤器的文件和目录。如果给定 filter 为 null则接受所有路径名。否则当且仅当在路径名上调用过滤器的 FilenameFilter .accept(File dir, String name)方法返回 true 时该路径名才满足过滤器。如果当前File对象不表示一个目录或者发生 I/O 错误则返回 null。
java.io.FileFilter文件过滤接口 抽象方法boolean accept(File pathname) pathname是某个文件夹在列出下一级时的每一个下一级 如果pathname根据某个条件返回true就表示要留下这个文件或文件夹。
代码整合
public class TestFile {Testpublic void test17(){//获取download下面的所有图片 以.jpg为例File dir new File(d:\\download);listAllJpgImageSubs(dir);}public void listAllJpgImageSubs(File dir){if(dir.isDirectory()){//条件成立的话说明是一个存在的文件夹File[] files dir.listFiles(new FileFilter() {Overridepublic boolean accept(File pathname) {return pathname.getName().endsWith(.jpg) || pathname.isDirectory();}});for (File sub : files) {if(sub.isDirectory()){listAllJpgImageSubs(sub);}else{System.out.println(sub);}}}}Testpublic void test16() {File dir new File(d:\\download);listAllSubs(dir);}public void listAllSubs(File dir){if(dir.isDirectory()){//条件成立的话说明是一个存在的文件夹System.out.println(dir);File[] files dir.listFiles();for (File sub : files) {if(sub.isDirectory()){listAllSubs(sub);}else{System.out.println(sub);}}}}/*public void listAllSubs(File dir){System.out.println(dir);if(dir.isDirectory()){//条件成立的话说明是一个存在的文件夹File[] files dir.listFiles();for (File sub : files) {listAllSubs(sub);}}}*/Testpublic void test15(){File dir new File(d:\\download);String[] allSubs dir.list();for (String sub : allSubs) {System.out.println(sub);}}Testpublic void test14() throws IOException {File file new File(d:/Download/北华大学实训归档材料-王海龙.zip);System.out.println(file.exists());//trueSystem.out.println(file.isDirectory());//falseSystem.out.println(file.isFile());//true}Testpublic void test13(){File file new File(d:\\1.txt);//new File对象只是在JVM的堆内存中创建一个对象不会真的在硬盘中创建一个文件或文件夹。//只有调用createNewFile或mkdir/mkdirs才会创建文件或文件夹System.out.println(file.exists());//falseSystem.out.println(file.isDirectory());//falseSystem.out.println(file.isFile());//falseSystem.out.println(file.length());//0System.out.println(file.lastModified());//0}Testpublic void test12(){File file new File(download\\1.txt);file.delete();File dir new File(download);dir.delete();}Testpublic void test11() throws IOException {File dir new File(d:\\io\\java\\test\\aa);//dir是代表aa文件夹//dir.mkdir();//如果d:\io\java\test文件夹不存在aa文件夹创建失败但是不会报异常dir.mkdirs();//如果d:\io\java\test文件夹不存在连同它们和aa一起创建}Testpublic void test10() throws IOException {File file new File(d:/Download/北华大学实训归档材料-王海龙.zip);System.out.println(file.getPath());//d:\Download\北华大学实训归档材料-王海龙.zipSystem.out.println(file.getAbsolutePath());//d:\Download\北华大学实训归档材料-王海龙.zipSystem.out.println(file.getCanonicalPath());//D:\Download\北华大学实训归档材料-王海龙.zip}Testpublic void test09() throws IOException {File file new File(../../../download/1.txt);System.out.println(file.getPath());//..\..\..\download\1.txtSystem.out.println(file.getAbsolutePath());//D:\atguigu\javaee\JavaSE20220106\JavaSECode\day0218_22teacher_code\..\..\..\download\1.txtSystem.out.println(file.getCanonicalPath());//D:\atguigu\javaee\download\1.txt}Testpublic void test08() throws IOException {File file new File(d:/Download/北华大学实训归档材料-王海龙.zip);System.out.println(file.getPath());//d:\Download\北华大学实训归档材料-王海龙.zipSystem.out.println(file.getAbsolutePath());//d:\Download\北华大学实训归档材料-王海龙.zip}Testpublic void test07() throws IOException {File file new File(download/1.txt);System.out.println(file.getPath());//download\1.txtSystem.out.println(file.getAbsolutePath());//D:\atguigu\javaee\JavaSE20220106\JavaSECode\day0218_22teacher_code\download\1.txt}public static void main(String[] args) throws IOException{File dir new File(download);dir.mkdir();//make directoryFile file new File(download/1.txt);file.createNewFile();}Testpublic void test06() throws IOException {File dir new File(download);dir.mkdir();//make directoryFile file new File(download/1.txt);file.createNewFile();}Testpublic void test05() {File file new File(d:/Download);System.out.println(file);System.out.println(文件夹名字 file.getName());System.out.println(文件夹路径名 file.getPath());System.out.println(文件夹大小 file.length());//错误的System.out.println(最后修改时间 file.lastModified());long time file.lastModified();Date date new Date(time);System.out.println(最后修改时间 date);}Testpublic void test04() {File file new File(d:/Download/北华大学实训归档材料-王海龙.zip);System.out.println(file);System.out.println(文件名字 file.getName());System.out.println(文件路径名 file.getPath());System.out.println(文件大小 file.length());System.out.println(最后修改时间 file.lastModified());long time file.lastModified();Date date new Date(time);System.out.println(最后修改时间 date);}Testpublic void test03() {File file new File(d:/Download/北华大学实训归档材料-王海龙.zip);System.out.println(file);}Testpublic void test02() {File file new File(d:\\Download,北华大学实训归档材料-王海龙.zip);System.out.println(file);}Testpublic void test01(){File file new File(d:\\Download\\北华大学实训归档材料-王海龙.zip);File dir new File(d:\\Download);System.out.println(file);System.out.println(dir);}
}
练习题1求某个目录某个文件夹总大小
public class Exercise1 {public static void main(String[] args) {File dir new File(d:\\学习资料);
// System.out.println(dir.length());//无法直接通过length方法获取文件夹的总大小System.out.println(getDirectoryLength(dir));}public static long getDirectoryLength(File dir){/*用一个变量累加这个文件夹里面包含下一级的下一级的文件的大小。*/long sum 0;if(dir.isFile()){//如果dir是文件那么直接用length方法表示大小sum dir.length();}else if(dir.isDirectory()){//列出文件夹的下一级File[] files dir.listFiles();for (File sub : files) {//sub是dir的下一级它可能是一个文件也可能是一个文件夹
// sum sub的大小;sum getDirectoryLength(sub);}}return sum;}}
练习题2递归删除非空目录
public class Exercise2 {public static void main(String[] args) {//友情提示找一个没有用的文件夹测试不然删除后不在回收站File dir new File(d:\\学习资料);
// dir.delete();forceDeleteDirectory(dir);}public static void forceDeleteDirectory(File dir){/*思路先把dir的下一级干掉再删除dir自己*///先把dir的下一级干掉if(dir.isDirectory()){File[] files dir.listFiles();for (File sub : files) {//sub是dir的下一级可能是文件可能是文件夹而且文件夹可能是非空的forceDeleteDirectory(sub);}}//删除dir自己dir.delete();}
}