java基础42 File类的构造函数及其方法
本文知识点(目录):
1、IO流(Input Output)
2、IO流技术的运用场景
3、File类的构造函数(方法)
4、File类的一些常用方法
5、实例(解析File类的常用方法)
6、附录1(扫描系统上的盘符和指定目录下的所有文件和文件夹)
7、附录2(在指定目录下,扫描出所有的指定类型的文件)
8、附录3(扫描电脑中所有的文件和文件夹,及下级目录下的所有文件和文件夹。或扫描指定盘符下的所有文件和文件夹)
9、附录4(删除磁盘中指定的文件夹里面的所有文件和文件夹)
1、IO流(Input Output)
IO流技术主要的作用是解决设备与设备之间的数据传输问题,比如:硬盘的数据--读取到-->内存中 内存的数据--读取到-->硬盘中 键盘上的数据--读取到-->内存中
2、IO流技术的运用场景
导出报表、上传大头照、下载、解析xml文件.....等等 (数据保存到硬盘,该数据可以做到永久性保存。数据一般以文件的形式保存到硬盘上。sun使用一个File类来描述文件或者文件夹)
3、File类的构造函数(方法)
File(String pathname):指定文件或者文件夹的路径来创建一个File文件
File(File parent, String child):根据parent抽象路径和child路径名字符串,创建一个新的File实例
File(String parent, String child):
目录分割符:在Windows机器上的目录分隔符是\,在Linux机器上的目录分隔符是/
注意:在Windows上面\与/都可以作为目录分隔符。而且,如果写/的时候,只需要写1个正斜杠即可,而写\的时候,需要写2个反斜杠。
1 package com.dhb.file; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 /** 7 * @author DSHORE / 2018-6-22 8 * 9 */ 10 public class Demo1 { 11 public static void main(String[] args) throws IOException { 12 File file = new File("F:/a.txt");//指定路径 [构造函数] 13 file.createNewFile();//创建文件(空文件) [方法] 14 15 File files = new File("F:\\","b.txt");//第一个参数是路径,第二个参数是要创建文件的文件名 [构造函数] 16 files.createNewFile();//创建文件(空文件) [方法] 17 } 18 }
4、File类的一些常用方法
创建:
createNewFile():在指定位置创建空文件,成功返回true,如果已存在就不再创建了返回false
mkdir():在指定位置创建目录,这之后创建最后一级目录,如果上级目录不存在就抛出异常.
mkdirs():在指定位置创建目录,这也会创建路径中所有不存在的父目录
renameTo(File dest):重命名文件或文件夹。文件不同时,相当于文件的剪切,剪切的时候不能操作非空文件夹。移动/重命名成功返回true,失败返回false
删除:
delete() :删除一个文件或者空文件夹,如果文件夹不为空,则不能删除,成返回true,失败返回false
deleteOnExit(): 在虚拟机终止时,请求删除此抽象路径名的文件或者目录,保证文件异常时也可以删除文件
判断:
exists():判断指定的文件或者文件夹是否存在
isFile():判断是否是一个文件;如果不存在,则为false
isDirectory():判断是否是一个文件夹
isHidden():判断指定的文件是否是隐藏文件
isAbsolute():判断指定的文件或文件夹是否是在绝对路径下
获取:
getName():获取文件或文件夹名称
getPath():返回的是绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath():获取绝对路径
length():获取文件的大小(字节为单位)
getParent():获取文件的父路径
lastModified():获取文件最后一次修改的时间
注意:
. :一个点表示当前路径
.. :两个点表示上一级路径
路径问题:
绝对路径:该文件在硬盘上的完整路径;绝对路径一般是以盘符开头的。
相对路径:资源文件相对于当前程序所在路径。
注意:如果程序当前所在路径与资源文件不再同一个盘下面,是没法写相对路径的
5、实例
1 package com.dhb.file; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 /** 7 * @author DSHORE / 2018-6-22 8 * 9 */ 10 public class Demo2 { 11 public static void main(String[] args) throws IOException { 12 //创建 13 File file=new File("F:\\aa"); 14 System.out.println("创建文件成功了吗?"+file.createNewFile()); 15 File dir=new File("F:\\aaa\\aaa"); 16 System.out.println("创建文件夹成功了吗?"+dir.mkdir()); 17 File dirs=new File("F:\\aaa\\aaa\\aa\\cc\\ddd"); 18 System.out.println("创建多级文件夹成功了吗?"+dirs.mkdirs()); 19 20 File destFile=new File("F:\\aaaw"); 21 System.out.println("重命名文件夹成功吗?"+dir.renameTo(destFile)); 22 System.out.println("重命名文件成功吗?"+file.renameTo(destFile)); 23 24 //删除 25 File deletefile=new File("F:\\aaa"); 26 System.out.println("删除文件/空文件夹成功吗?"+deletefile.delete()); 27 file.deleteOnExit();//jvm 28 System.out.println("哈哈哈"); 29 30 //判断 31 File fil=new File("F:\\a.txt"); 32 file.createNewFile();//创建一个文件 33 System.out.println("该文件/文件夹存在吗?"+fil.exists()); 34 System.out.println("判断是否是一个文件:"+fil.isFile()); 35 System.out.println("判断是否是一个文件夹:"+fil.isDirectory()); 36 System.out.println("隐藏文件吗?"+fil.isHidden()); 37 System.out.println("是绝对路径吗?"+fil.isAbsolute()); 38 } 39 }
"获取"的例子
1 package com.dhb.file; 2 3 import java.io.File; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6 7 /** 8 * @author DSHORE / 2018-6-25 9 * 10 */ 11 public class Demo3 { 12 public static void main(String[] args) { 13 /*File file=new File("..\\homeWork.java"); 14 System.out.println(file.exists());*/ 15 16 File f=new File("..\\..\\a.txt");//上上级路径下的a.txt文件 17 System.out.println("获取文件名:"+f.getName());//返回值:a.txt 18 System.out.println("获取相对路径:"+f.getPath());//返回值:..\..\a.txt 说明:a.txt文件在C:\MyEclipse10路径下 19 /** 当上面两条输出语句的绝对路径下没有a.txt这个文件时,也是输出这个结果,因为他获取的是当前对象f的值*/ 20 System.out.println(f.exists());//返回值:true 说明:C:\MyEclipse10路径下有a.txt文件 21 System.out.println("获取绝对路径:"+f.getAbsolutePath());//返回值:C:\MyEclipse10\MyCode\MyJavaCode\..\..\a.txt 22 System.out.println("获取文件的大小(字节为单位):"+f.length());//返回值:10 23 System.out.println("获取文件的父路径:"+f.getParent());//返回值:..\.. 说明:其父路径为C:\MyEclipse10 24 long lm=f.lastModified(); 25 Date date=new Date(lm); 26 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); 27 System.out.println("获取文件最后一次修改的时间:"+sdf.format(date));//返回值:2018年06月25日 11:29:49 28 } 29 }
运行结果图
附录1
与文件夹操作相关:
static File[] listRoots():列出所有的根目录(Windows所有系统盘符)
list():返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作)
listFiles():返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作)
1 package com.dhb.file; 2 3 import java.io.File; 4 5 /** 6 * @author DSHORE / 2018-6-25 7 * 8 */ 9 public class Demo4 { 10 public static void main(String[] args) { 11 File[] roots=File.listRoots(); 12 for (File file : roots) { 13 System.out.println(file); 14 /* C:\ //运行结果 15 * D:\ 16 * E:\ 17 * F:\ 18 * G:\ 19 * H:\ 20 * */ 21 } 22 23 File file=new File("F:\\MyJavaCode"); 24 String[] s=file.list(); 25 for (String string : s) { 26 System.out.println(string);//返回指定目录下的所有文件或文件夹名,包含隐藏文件(返回的文件/文件夹名是字符串,不可再对文件/文件夹进行操作) 27 } 28 29 File[] f=file.listFiles(); 30 for (File file2 : f) { 31 System.out.println(file2.getName());//返回指定目录下的所有文件或文件夹名,包含隐藏文件(可以再对文件/文件夹进行操作) 32 } 33 } 34 }
运行结果图
后面两条输出语句的结果都一样
附录2
例1:
1 package com.dhb.file; 2 3 import java.io.File; 4 5 /** 6 * @author DSHORE / 2018-6-25 7 * 8 */ 9 /* 需求1:指定一个文件夹,然后返回文件夹下面所有java文件 10 * */ 11 public class Demo5 { 12 public static void main(String[] args) { 13 listJava(new File("F:\\MyJavaCode")); 14 } 15 public static void listJava(File dir){ 16 File[] file=dir.listFiles(); 17 for (File file2 : file) { 18 //方法1 19 if(file2.getName().endsWith(".java")){ 20 System.out.println(file2.getName()); 21 } 22 //方法2:正则表达式 23 String fileName=file2.getName(); 24 if(fileName.matches(".+\\.java")){ 25 System.out.println(fileName); 26 } 27 } 28 } 29 }
运行结果图
例2:
1 package com.dhb.file; 2 3 import java.io.File; 4 5 /** 6 * @author DSHORE / 2018-6-26 7 * 8 */ 9 /* 10 * 需求2:指定一个文件夹,然后列出文件夹下面的所有子文件与文件夹,但是 格式要如下 11 * 12 * 文件: 13 * 文件名1 14 * 文件名2 15 * 文件名2 16 * 17 * 文件夹: 18 * 文件夹1 19 * 文件夹2 20 * 文件夹3 21 * */ 22 public class Demo6 { 23 24 public static void listJava2(File dir){ 25 File[] file=dir.listFiles(); 26 System.out.println("以下是文件:"); 27 for (File file2 : file) { 28 if(file2.isFile()){//判断其是否是文件 29 System.out.println(file2.getName()); 30 } 31 } 32 System.out.println("以下是文件夹:"); 33 for (File file2 : file) { 34 if(file2.isDirectory()){//判断其是否是文件夹 35 System.out.println(file2.getName()); 36 } 37 } 38 } 39 public static void main(String[] args) { 40 listJava2(new File("F:\\MyJavaCode")); 41 } 42 }
运行结果图
附录3
1 package com.dhb.file; 2 3 import java.io.File; 4 5 /** 6 * @author DSHORE / 2018-6-26 7 * 8 */ 9 //需求:扫描电脑中所有文件夹和文件以及文件夹下的文件和文件夹,或扫描指定盘符下的所有文件和文件夹等等 10 public class Demo7 { 11 public static void listDirtory(String dir){ 12 File f=new File(dir); 13 File[] f2=f.listFiles();//得到文件和文件夹 14 if(f2==null){ 15 return; 16 }else{ 17 for (int i = 0; i < f2.length; i++) { 18 if(f2[i].isDirectory()){//判断是否是 文件夹 19 System.out.println(f2[i].getAbsolutePath()+" \"is director file\"");//返回值是“文件夹” 20 listDirtory(f2[i].getAbsolutePath());//继续扫描文件夹里面的文件和文件夹 21 }else{ 22 System.out.println(f2[i].getAbsolutePath());//返回值是“文件” 23 } 24 } 25 } 26 } 27 public static void main(String[] args) { 28 /*File[] f=File.listRoots();//扫描电脑中所有根盘符 29 for (File file : f) { 30 System.out.println(file); 31 listDirtory(file.toString());//继续扫描文件夹里面的文件和文件夹 32 }*/ 33 //扫描当前磁盘 34 listDirtory(File.separator); 35 //扫描指定磁盘 36 //listDirtory("F:\\"); 37 } 38 }
运行结果图(文件和文件夹太多,下面只显示部分)路径的最后一级是文件/文件夹
附录4
1 package com.dhb.file; 2 3 import java.io.File; 4 5 /** 6 * @author DSHORE / 2018-7-4 7 * 8 */ 9 //需求:删除磁盘中指定的文件夹里面的所有文件和文件夹 10 public class Demo12 { 11 public static void delDir(File dir){ 12 File[] files=dir.listFiles(); 13 if(files != null){ 14 for (int i = 0; i < files.length; i++) { 15 if(files[i].isFile()){ 16 boolean b = files[i].delete(); 17 if(b){ 18 System.out.println(files[i].getAbsolutePath()+"\'文件删除成功\'"); 19 } 20 }else{ 21 delDir(files[i]); 22 } 23 } 24 }//留下根目录,根目录里面的文件和文件夹全删了 25 for (int j = 0; j < files.length; j++) { 26 if (files[j].isDirectory()) { 27 boolean b2 = files[j].delete(); 28 //dir.delete();//删除根目录 29 if (b2) { 30 System.out.println(files[j].getAbsolutePath()+"\'目录删除成功\'"); 31 } 32 } 33 } 34 if ("F:\\day".equals(dir.getAbsolutePath())) { 35 boolean b3 = dir.delete();//删除根目录 36 if (b3) { 37 System.out.println(dir.getAbsolutePath()+"\'根目录删除成功\'"); 38 } 39 } 40 } 41 public static void main(String[] args) { 42 File f=new File("F:\\day"); 43 delDir(f); 44 } 45 }
删除前
删除后(程序运行后)
原创作者:DSHORE 作者主页:http://www.cnblogs.com/dshore123/ 原文出自:https://www.cnblogs.com/dshore123/p/9214032.html 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |