java中File類的構(gòu)造函數(shù)及其方法
1、IO流(Input Output)
IO流技術(shù)主要的作用是解決設(shè)備與設(shè)備之間的數(shù)據(jù)傳輸問題,比如:硬盤的數(shù)據(jù)--讀取到-->內(nèi)存中 內(nèi)存的數(shù)據(jù)--讀取到-->硬盤中 鍵盤上的數(shù)據(jù)--讀取到-->內(nèi)存中
2、IO流技術(shù)的運用場景
導(dǎo)出報表、上傳大頭照、下載、解析xml文件.....等等 (數(shù)據(jù)保存到硬盤,該數(shù)據(jù)可以做到永久性保存。數(shù)據(jù)一般以文件的形式保存到硬盤上。sun使用一個File類來描述文件或者文件夾)
3、File類的構(gòu)造函數(shù)(方法)
- File(String pathname):指定文件或者文件夾的路徑來創(chuàng)建一個File文件
- File(File parent, String child):根據(jù)parent抽象路徑和child路徑名字符串,創(chuàng)建一個新的File實例
- File(String parent, String child):
目錄分割符:在Windows機(jī)器上的目錄分隔符是\,在Linux機(jī)器上的目錄分隔符是/
注意:在Windows上面\與/都可以作為目錄分隔符。而且,如果寫/的時候,只需要寫1個正斜杠即可,而寫\的時候,需要寫2個反斜杠。
package com.dhb.file; import java.io.File; import java.io.IOException; /** * @author DSHORE / 2018-6-22 * */ public class Demo1 { public static void main(String[] args) throws IOException { File file = new File("F:/a.txt");//指定路徑 [構(gòu)造函數(shù)] file.createNewFile();//創(chuàng)建文件(空文件) [方法] File files = new File("F:\\","b.txt");//第一個參數(shù)是路徑,第二個參數(shù)是要創(chuàng)建文件的文件名 [構(gòu)造函數(shù)] files.createNewFile();//創(chuàng)建文件(空文件) [方法] } }
4、File類的一些常用方法
創(chuàng)建:
- createNewFile():在指定位置創(chuàng)建空文件,成功返回true,如果已存在就不再創(chuàng)建了返回false
- mkdir():在指定位置創(chuàng)建目錄,這之后創(chuàng)建最后一級目錄,如果上級目錄不存在就拋出異常.
- mkdirs():在指定位置創(chuàng)建目錄,這也會創(chuàng)建路徑中所有不存在的父目錄
- renameTo(File dest):重命名文件或文件夾。文件不同時,相當(dāng)于文件的剪切,剪切的時候不能操作非空文件夾。移動/重命名成功返回true,失敗返回false
刪除:
- delete() :刪除一個文件或者空文件夾,如果文件夾不為空,則不能刪除,成返回true,失敗返回false
- deleteOnExit(): 在虛擬機(jī)終止時,請求刪除此抽象路徑名的文件或者目錄,保證文件異常時也可以刪除文件
判斷:
- exists():判斷指定的文件或者文件夾是否存在
- isFile():判斷是否是一個文件;如果不存在,則為false
- isDirectory():判斷是否是一個文件夾
- isHidden():判斷指定的文件是否是隱藏文件
- isAbsolute():判斷指定的文件或文件夾是否是在絕對路徑下
獲?。?br />
- getName():獲取文件或文件夾名稱
- getPath():返回的是絕對路徑,可以是相對路徑,但是目錄要指定
- getAbsolutePath():獲取絕對路徑
- length():獲取文件的大小(字節(jié)為單位)
- getParent():獲取文件的父路徑
- lastModified():獲取文件最后一次修改的時間
注意:
- . :一個點表示當(dāng)前路徑
- .. :兩個點表示上一級路徑
路徑問題:
- 絕對路徑:該文件在硬盤上的完整路徑;絕對路徑一般是以盤符開頭的。
- 相對路徑:資源文件相對于當(dāng)前程序所在路徑。
注意:如果程序當(dāng)前所在路徑與資源文件不再同一個盤下面,是沒法寫相對路徑的
5、實例
package com.dhb.file; import java.io.File; import java.io.IOException; /** * @author DSHORE / 2018-6-22 * */ public class Demo2 { public static void main(String[] args) throws IOException { //創(chuàng)建 File file=new File("F:\\aa"); System.out.println("創(chuàng)建文件成功了嗎?"+file.createNewFile()); File dir=new File("F:\\aaa\\aaa"); System.out.println("創(chuàng)建文件夾成功了嗎?"+dir.mkdir()); File dirs=new File("F:\\aaa\\aaa\\aa\\cc\\ddd"); System.out.println("創(chuàng)建多級文件夾成功了嗎?"+dirs.mkdirs()); File destFile=new File("F:\\aaaw"); System.out.println("重命名文件夾成功嗎?"+dir.renameTo(destFile)); System.out.println("重命名文件成功嗎?"+file.renameTo(destFile)); //刪除 File deletefile=new File("F:\\aaa"); System.out.println("刪除文件/空文件夾成功嗎?"+deletefile.delete()); file.deleteOnExit();//jvm System.out.println("哈哈哈"); //判斷 File fil=new File("F:\\a.txt"); file.createNewFile();//創(chuàng)建一個文件 System.out.println("該文件/文件夾存在嗎?"+fil.exists()); System.out.println("判斷是否是一個文件:"+fil.isFile()); System.out.println("判斷是否是一個文件夾:"+fil.isDirectory()); System.out.println("隱藏文件嗎?"+fil.isHidden()); System.out.println("是絕對路徑嗎?"+fil.isAbsolute()); } }
"獲取"的例子
package com.dhb.file; import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; /** * @author DSHORE / 2018-6-25 * */ public class Demo3 { public static void main(String[] args) { /*File file=new File("..\\homeWork.java"); System.out.println(file.exists());*/ File f=new File("..\\..\\a.txt");//上上級路徑下的a.txt文件 System.out.println("獲取文件名:"+f.getName());//返回值:a.txt System.out.println("獲取相對路徑:"+f.getPath());//返回值:..\..\a.txt 說明:a.txt文件在C:\MyEclipse10路徑下 /** 當(dāng)上面兩條輸出語句的絕對路徑下沒有a.txt這個文件時,也是輸出這個結(jié)果,因為他獲取的是當(dāng)前對象f的值*/ System.out.println(f.exists());//返回值:true 說明:C:\MyEclipse10路徑下有a.txt文件 System.out.println("獲取絕對路徑:"+f.getAbsolutePath());//返回值:C:\MyEclipse10\MyCode\MyJavaCode\..\..\a.txt System.out.println("獲取文件的大小(字節(jié)為單位):"+f.length());//返回值:10 System.out.println("獲取文件的父路徑:"+f.getParent());//返回值:..\.. 說明:其父路徑為C:\MyEclipse10 long lm=f.lastModified(); Date date=new Date(lm); SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); System.out.println("獲取文件最后一次修改的時間:"+sdf.format(date));//返回值:2018年06月25日 11:29:49 } }
運行結(jié)果圖
附錄1
與文件夾操作相關(guān):
- static File[] listRoots():列出所有的根目錄(Windows所有系統(tǒng)盤符)
- list():返回指定目錄下的所有文件或文件夾名,包含隱藏文件(返回的文件/文件夾名是字符串,不可再對文件/文件夾進(jìn)行操作)
- listFiles():返回指定目錄下的所有文件或文件夾名,包含隱藏文件(可以再對文件/文件夾進(jìn)行操作)
package com.dhb.file; import java.io.File; /** * @author DSHORE / 2018-6-25 * */ public class Demo4 { public static void main(String[] args) { File[] roots=File.listRoots(); for (File file : roots) { System.out.println(file); /* C:\ //運行結(jié)果 * D:\ * E:\ * F:\ * G:\ * H:\ * */ } File file=new File("F:\\MyJavaCode"); String[] s=file.list(); for (String string : s) { System.out.println(string);//返回指定目錄下的所有文件或文件夾名,包含隱藏文件(返回的文件/文件夾名是字符串,不可再對文件/文件夾進(jìn)行操作) } File[] f=file.listFiles(); for (File file2 : f) { System.out.println(file2.getName());//返回指定目錄下的所有文件或文件夾名,包含隱藏文件(可以再對文件/文件夾進(jìn)行操作) } } }
運行結(jié)果圖
后面兩條輸出語句的結(jié)果都一樣
附錄2
例1:
package com.dhb.file; import java.io.File; /** * @author DSHORE / 2018-6-25 * */ /* 需求1:指定一個文件夾,然后返回文件夾下面所有java文件 * */ public class Demo5 { public static void main(String[] args) { listJava(new File("F:\\MyJavaCode")); } public static void listJava(File dir){ File[] file=dir.listFiles(); for (File file2 : file) { //方法1 if(file2.getName().endsWith(".java")){ System.out.println(file2.getName()); } //方法2:正則表達(dá)式 String fileName=file2.getName(); if(fileName.matches(".+\\.java")){ System.out.println(fileName); } } } }
運行結(jié)果圖
例2:
package com.dhb.file; import java.io.File; /** * @author DSHORE / 2018-6-26 * */ /* * 需求2:指定一個文件夾,然后列出文件夾下面的所有子文件與文件夾,但是 格式要如下 * * 文件: * 文件名1 * 文件名2 * 文件名2 * * 文件夾: * 文件夾1 * 文件夾2 * 文件夾3 * */ public class Demo6 { public static void listJava2(File dir){ File[] file=dir.listFiles(); System.out.println("以下是文件:"); for (File file2 : file) { if(file2.isFile()){//判斷其是否是文件 System.out.println(file2.getName()); } } System.out.println("以下是文件夾:"); for (File file2 : file) { if(file2.isDirectory()){//判斷其是否是文件夾 System.out.println(file2.getName()); } } } public static void main(String[] args) { listJava2(new File("F:\\MyJavaCode")); } }
運行結(jié)果圖
附錄3
package com.dhb.file; import java.io.File; /** * @author DSHORE / 2018-6-26 * */ //需求:掃描電腦中所有文件夾和文件以及文件夾下的文件和文件夾,或掃描指定盤符下的所有文件和文件夾等等 public class Demo7 { public static void listDirtory(String dir){ File f=new File(dir); File[] f2=f.listFiles();//得到文件和文件夾 if(f2==null){ return; }else{ for (int i = 0; i < f2.length; i++) { if(f2[i].isDirectory()){//判斷是否是 文件夾 System.out.println(f2[i].getAbsolutePath()+" \"is director file\"");//返回值是“文件夾” listDirtory(f2[i].getAbsolutePath());//繼續(xù)掃描文件夾里面的文件和文件夾 }else{ System.out.println(f2[i].getAbsolutePath());//返回值是“文件” } } } } public static void main(String[] args) { /*File[] f=File.listRoots();//掃描電腦中所有根盤符 for (File file : f) { System.out.println(file); listDirtory(file.toString());//繼續(xù)掃描文件夾里面的文件和文件夾 }*/ //掃描當(dāng)前磁盤 listDirtory(File.separator); //掃描指定磁盤 //listDirtory("F:\\"); } }
運行結(jié)果圖(文件和文件夾太多,下面只顯示部分)路徑的最后一級是文件/文件夾
附錄4
package com.dhb.file; import java.io.File; /** * @author DSHORE / 2018-7-4 * */ //需求:刪除磁盤中指定的文件夾里面的所有文件和文件夾 public class Demo12 { public static void delDir(File dir){ File[] files=dir.listFiles(); if(files != null){ for (int i = 0; i < files.length; i++) { if(files[i].isFile()){ boolean b = files[i].delete(); if(b){ System.out.println(files[i].getAbsolutePath()+"\'文件刪除成功\'"); } }else{ delDir(files[i]); } } }//留下根目錄,根目錄里面的文件和文件夾全刪了 for (int j = 0; j < files.length; j++) { if (files[j].isDirectory()) { boolean b2 = files[j].delete(); //dir.delete();//刪除根目錄 if (b2) { System.out.println(files[j].getAbsolutePath()+"\'目錄刪除成功\'"); } } } if ("F:\\day".equals(dir.getAbsolutePath())) { boolean b3 = dir.delete();//刪除根目錄 if (b3) { System.out.println(dir.getAbsolutePath()+"\'根目錄刪除成功\'"); } } } public static void main(String[] args) { File f=new File("F:\\day"); delDir(f); } }
刪除前
刪除后(程序運行后)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入理解Java8新特性之Lambda表達(dá)式的基本語法和自定義函數(shù)式接口
Lambda 表達(dá)式,也可稱為閉包,它是推動 Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)。使用 Lambda 表達(dá)式可以使代碼變的更加簡潔緊湊2021-11-11SpringCloud Feign傳遞HttpServletRequest對象流程
HttpServletRequest接口的對象代表客戶端的請求,當(dāng)客戶端通過HTTP協(xié)議訪問Tomcat服務(wù)器時,HTTP請求中的所有信息都封裝在HttpServletRequest接口的對象中,這篇文章介紹了Feign傳遞HttpServletRequest對象的流程,感興趣的同學(xué)可以參考下文2023-05-05解決spring AOP中自身方法調(diào)用無法應(yīng)用代理的問題
這篇文章主要介紹了解決spring AOP中自身方法調(diào)用無法應(yīng)用代理的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08如何為Spark Application指定不同的JDK版本詳解
這篇文章主要給大家介紹了關(guān)于如何為Spark Application指定不同的JDK版本的相關(guān)資料,文中通過示例代碼將解決的方法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友下面來隨著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11