File概述
java.io.File類別:檔案與目錄路徑名稱的抽象表示形式。
用來描述電腦中檔案,資料夾,以及路徑類別
常用的3個和File有關的單字:
file:檔案
directory:文件夾(目錄)
path:路徑
File是與系統無關的類別
File類別的3個重載的建構方法
路徑:
window系統的目錄分隔符是一個\
java中的目錄分隔符號是:\\或/
路徑的分類:
絕對路徑:以磁碟機開始的路徑
例如:D:\\ase\\20170514\\day10
D:\\Work_EE_266\\day10\\src
相對路徑:相對於目前專案來說,路徑寫好的時候可以省略盤符到項目之間的路徑
D:\\Work_EE_266\\day10-->src
注意:路勁不區分大小寫的
File(File parent, String child)
傳遞路徑,傳遞File 類型父路徑,字串類型子路徑
好處:父路徑是File 類型,父路徑可以直接呼叫File 類別的方法
File(String parent, String child)
傳遞路徑,傳遞字串類型父路徑,字串類型的子路徑
好處:單獨操作父路徑和子路徑,使用起來比較靈活,可以把路徑單獨作為參數傳遞過來
File(String pathname)
傳遞路徑名:可以寫資料夾,也可以寫到一個檔案
c:\\abc c:\\abc\\Demo.java
路徑存不存在都可以建立,路徑不區分大小寫
1 public static void main(String[] args) { 2 /* 3 * static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。 4 * static char pathSeparatorChar 与系统有关的路径分隔符。 5 * static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 6 * static char separatorChar 与系统有关的默认名称分隔符。 7 */ 8 String pathSeparator = File.pathSeparator; 9 System.out.println(pathSeparator);//路径分隔符 windows 分号; linux 冒号:10 11 String separator = File.separator;12 System.out.println(separator);//目录名称分隔符windows 反斜杠\ linux 正斜杠/13 14 /*15 * System类中的方法16 * static String getProperty(String key) 获取指定键指示的系统属性。 17 * file.separator 文件分隔符(在 UNIX 系统中是“/”) 18 * path.separator 路径分隔符(在 UNIX 系统中是“:”) 19 * line.separator 行分隔符(在 UNIX 系统中是“/n”) 20 */21 System.out.println(System.getProperty("file.separator"));22 System.out.println(System.getProperty("line.separator"));23 System.out.println(System.getProperty("path.separator"));24 }
File類別的建立和刪除功能
File 類別的刪除功能
boolean delete()
刪除檔案或資料夾,在File 建構方法中給出
刪除成功回傳true,刪除失敗回傳false(不存在,資料夾中有內容)
刪除方法不走回收站,直接從硬碟刪除
刪除有風險,運行需謹慎
File 建立資料夾功能
boolean mkdir() 只能建立單層資料夾
boolean mkdirs( ) 既能創建單層資料夾,又能創建多層資料夾
創建的路徑也在File 構造方法中給出
如果資料夾已經存在,不在創建
File 建立檔案的功能
boolean createNewFile()
建立的檔案路徑和檔案名稱,在File 建構方法中給出
如果檔案已經存在,不在建立回傳false
只能建立檔案,不能建立資料夾(看類型,不要看後綴)
建立資料夾的路徑,必須存在
File類別的判斷功能
boolean isDirectory()
判斷File 建構方法中封裝的路徑是不是資料夾
如果是資料夾就回傳true,如果不是資料夾就回傳false
boolean isFile()
判斷File 建構方法中封裝的路徑是不是檔案
boolean exists()
判斷File 建構方法中封裝路徑是否存在
存在就回傳true,不存在就傳回false
# File類別的取得功能
String getParent() 傳回String 物件
File getParentFile() 傳回File 物件
取得父路徑,傳回的是檔案末端的父路徑
long length()
傳迴路徑中表示的檔案的位元組數,資料夾沒有大小
String getPath() 將此抽象路徑名轉換為一個路徑名字串。
和toString 一樣
String getName()
傳迴路徑中表示的檔案或資料夾名稱
取得路徑中最後部分的名字
File getAbsoluteFile() 傳回此抽象路徑名的絕對路徑名形式。
String getAbsolutePath() 傳回此抽象路徑名的絕對路徑名稱字串。
取得絕對路徑
遍歷目錄的方法 list和listFiles
注意事項:
1.被遍歷的路徑只能是一個目錄
2.遍歷的目錄必須存在
否則就會拋空指標例外
static File[] listRoots()
取得系統中所有根目錄
# File[] listFiles()
取得到File 建構方法中封裝的路徑中的檔案和資料夾名稱(遍歷一個目錄)
傳回的是目錄或檔案的全路徑
String[] list( )
取得到File 建構方法中封裝的路徑中的檔案和資料夾名稱(遍歷一個目錄)
傳回的只有名字
遞迴
遞迴:方法自己呼叫自己
分類:
遞迴分成兩種,直接遞迴與間接遞迴。
直接遞迴稱為方法自身呼叫自己。間接遞歸可以A方法呼叫B方法,B方法呼叫C方法,C方法呼叫A方法。
注意:
1.遞迴一定要有條件限定,保證遞迴能夠停止下來,否則會發生堆疊記憶體溢位。
2.在遞迴中雖然有限定條件,但是遞迴次數不能太多。否則也會發生棧記憶體溢位。
3.建構方法,禁止遞迴
1 使用递归计算1-n之间的和 2 n + (n-1)+ (n-2)+(n-3)+...+1 3 5 +(5-1)+(4-1)+(3-1)+(2-1) 4 结束条件:n=1的时候结束 5 方法自己调用自己目的:获取n-1,获取到n=1的时候结束 6 public static int DGSum(int n){ 7 //添加结束条件 8 if(n==1){ 9 return 1;10 }11 return n+DGSum(n-1);12 } 13 14 使用递归计算阶乘15 private static long DGJC(int n) {16 //递归的结束条件 n==117 if(n==1){18 return 1;19 }20 return n*DGJC(n-1);21 }22 23 使用递归计算斐波那契数列 24 private static int fbnq(int month) {25 //结束条件如果month是1,2直接返回126 if(month==1 || month==2){27 return 1;28 }29 //3月以上:兔子数量是前两个月之和30 return fbnq(month-1)+fbnq(month-2);31 }
文件过滤器
文件的过滤器:
需求:遍历hello文件夹,只获取文件夹中的.java结尾的文件
c:\\hello
c:\\hello\\demo.txt
c:\\hello\\Hello.java
在File类中listFiles()方法是遍历文件夹的方法
有两个和 listFiles重载的方法,参数传递的就是过滤器
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
发现方法的参数FileFilter和FilenameFilter是接口
所有我们需要自己定义接口的实现类,重写接口中的方法accept,实现过滤功能
1 public class FileFilterImpl implements FileFilter{ 2 /* 3 * 实现过滤的方法: 4 1.把传递过来的路径pathname,变成字符串 5 Stirng s = pathname.toString(); "c:\\hello\\demo.txt" 6 String s = pathname.getPaht(); "c:\\hello\\demo.txt" 7 String s = pathname.getName(); "demo.txt" 8 2.使用String类中的方法endsWith判断字符串是否以指定的字符串结尾 9 boolean b = s.endsWith(".java");10 return b;11 */12 @Override13 public boolean accept(File pathname) {14 /*String s = pathname.getName();15 boolean b = s.endsWith(".java");16 return b;*/17 return pathname.getName().toLowerCase().endsWith(".java");18 }19 }20 public class FilenameFilterImpl implements FilenameFilter{21 22 @Override23 public boolean accept(File dir, String name) {24 return name.toUpperCase().endsWith(".JAVA");25 }26 27 }
断点调试
debug断点调试
f6:逐行执行
f5:进入到方法中
f7:结束方法
f8:跳到下一个断点
watch:捕获
以上是File概述與使用方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!