1.概念
- 程序需要持久保存到設(shè)備硬盤時候用到
- output input io操作
2.file
- 包括文件夾,文件和路徑,Java中file類和平臺(操作系統(tǒng))無關(guān)
- \是window盤符,/是linux盤符
- 將文件(file),目錄(文件夾director),路徑(path)封裝成file對象
- 有靜態(tài)方法char類和String類,用法均一樣,返回值不一樣
File.pathSeparator是路徑分隔符(;)
File.separator是目錄分隔符
以上均跟隨系統(tǒng)自動變換window中是";"和"\"
Linux中是":"和"/"
想做系統(tǒng)無關(guān)性則不能寫死需要用到以上兩個靜態(tài)
3.構(gòu)造方法
new File("c:\\abc\\demo.java");
new File("c:\\abc");
/*
-可寫到具體文件名也可以寫道文件夾
-是雙斜線,否則單斜線是轉(zhuǎn)義含義
-window下不區(qū)分大小寫,linux會區(qū)分大小寫
-tostring重寫過顯示是file內(nèi)path
-此處不會關(guān)心是否真實路徑,方法exist()來判斷路徑是否存在
-絕對路徑整個系統(tǒng)唯一
-相對路徑是指相對關(guān)系,有一個參考點(某個文件夾)
-同一目錄下都是平級
*/
new File("c:","abc");傳入父路徑和子路徑,靈活性更高
new File(new File("c:"),"abc");父路徑是一個file對象
4.創(chuàng)建刪除
boolean a=new File("C:\\Users\\fengbo\\Desktop\\aaaaa").createNewFile();
文件已存在則不創(chuàng)建返回false,此方法不能創(chuàng)建文件夾
boolean a=new File("C:\\Users\\fengbo\\Desktop\\aaaaa").mkdir()創(chuàng)建文件夾
mkdirs()則會創(chuàng)建多級文件夾,也能創(chuàng)建單個,推薦使用
------------
delete()刪除文件或文件夾
直接硬盤刪除不會去回收站
不存在或打開狀態(tài)刪除失敗
5.獲取功能
file.getName()
不管存不存在僅負責(zé)獲取文件創(chuàng)建時候最后文件或文件夾名稱
file.getPath();和tostring一樣獲取全路徑
long length()獲取文件字節(jié)但不能獲得文件夾大小
string getAbsolutePath()獲得絕對路徑 file getAbsoluteFile()
eclipse下寫相對路徑默認是工程根目錄
file.getParent()和file.getParentFIle()獲得父路徑,返回值不一樣
6.判斷
boolean exists()路徑下文件是否存在
boolean isfile和isDirectory()在判斷之前確定exists
7.獲取
string[] list(),file[] listfiles()
返回數(shù)組字符串的話按字母來排
靜態(tài)方法 File.listRoots()返回根目錄數(shù)組
8.過濾器
import java.io.File;
import java.io.FileFilter;
public class MyFilter implements FileFilter {
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
return pathname.getName().toLowerCase().endsWith(".java");
endswith會區(qū)分大小寫
}
}
過濾器沒給出可用對象,需要自己繼承filefileter實現(xiàn)
作用是獲取符合條件文件文件夾
-------------------------------
public static void getFile1(File file)
{
File[] filelist=file.listFiles(new MyFilter());
for (File filelistarr:filelist) {
if (filelistarr.isDirectory()) {
getFile1(filelistarr);
}else {
System.out.println(filelistarr);
}
}
}
listFiles會自動調(diào)用自定義myfilter中的accept重寫方法,
并將全路徑傳給accept中參數(shù)pathname,
accept收到pathname進行判斷,真則返回file,假則不返回
-----------------------------
遞歸:自己調(diào)用自己
適用于方法不變,方法參數(shù)改變
注意:遞歸一定要要出口,次數(shù)不能多,5000次左右就會算不出數(shù)值
遞歸速度慢,是不停方法進棧然后等最盡頭算出依次返回