當須要把內存中的數據存儲到持久化設備上這個動做稱爲輸出(寫)Output操做。java
當把持久設備上的數據讀取到內存中的這個動做稱爲輸入(讀)Input操做。數組
所以咱們把這種輸入和輸出動做稱爲IO操做。測試
//相對路徑:相對本工程的路徑spa
File file=new File("src");對象
//獲取絕對路徑遞歸
file.getAbsolutePath();接口
//獲取文件夾名內存
file.getName();字符串
//獲取該文件的字符串路徑get
file.getPath();
//獲取這文件夾的長度
file.length();
新建文件:
//1.不能建立同名文件
//2.不能建立文件夾
File file=new File("D:\\text\\c.JaVa");
file.createNewFile();//返回一個布爾值,判斷是否建立成功
建立文件夾:
file.mkdir();
建立多級文件夾
file.mkdirs();
//判斷該File指定的文件或文件夾是否存在
file.exists();
//判斷該File指定的文件或文件夾是不是文件夾(目錄)
file.isDirectory();
//判斷該File指定的文件或文件夾是不是是文件
file.isFile();
//刪除文件或文件夾
file.delete();
File.pathSeparator 路徑分隔符
Windows系統 ; Linux系統 :
listFiles()方法
list() 返回一個字符數串組,爲指定路徑中的文件名
listFiles() 返回一個全部路徑名的File[]
注意:在獲取指定目錄下的文件或者文件夾時必須知足下面兩個條件
1,指定的目錄必須是存在的,
2,指定的必須是目錄。不然容易引起返回數組爲null,出現NullPointerException
文件過濾器
listFiles(FileFilter filter)重載方法:返回路徑名File[],而且符合括號中指定過濾的文件和目錄
FileFilter 接口
方法:accept(File pathname);測試指定路徑名是否包含在指定文件中,accept方法接受一個參數,這個參數就當前文件或文件夾對象
返回值 boolean
須要自定義類接受FileFilter接口
列: File file=new File("D:\\text");
File[] files=file.listFiles(new MyFileFilter());
for(File f:files){
System.out.println(f);
}
public class MyFileFilter implements FileFilter{
public boolean accept(File pathname){
return pathname.getName().toLowerCase().endsWith(".java");
}
}
getName()獲取文件名,toLowerCase(),大寫轉爲小寫,endsWith(".java");判斷以什麼結尾(「.java」);
遞歸
遞歸,指在當前方法內調用本身的這種現象
注意:遞歸必定要有條件限定,保證遞歸可以中止下來,不然會發生棧內存溢出。
在遞歸中雖然有限定條件,可是遞歸次數不能太多。不然也會發生棧內存溢出。
遞歸打印指定文件下的全部子目錄:
File file=new File(「D:\\text」);
public static void geta(File file){
File[] files=file.listFiles(new My());
for(File f:files){
if(f.isDirectory()){//判斷若是是文件夾就繼續調用
geta(f);
}
if(f.isFile()){//判斷是文件 打印
System.out.println(f);
}
}
}
public class My implements FileFilter{
public boolean My(File pathname){
if(pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".txt");
}
}