首頁 Java java教程 File概述與使用方法介紹

File概述與使用方法介紹

Jun 21, 2017 am 09:34 AM
file 遞迴

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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

C++ 函式的遞歸實作:遞迴深度有限制嗎? C++ 函式的遞歸實作:遞迴深度有限制嗎? Apr 23, 2024 am 09:30 AM

C++函數的遞歸深度受到限制,超過此限制會導致堆疊溢位錯誤。限制值因係統和編譯器而異,通常在1000到10000之間。解決方法包括:1.尾遞歸最佳化;2.尾呼叫;3.迭代實作。

鴻蒙原生應用隨機詩詞 鴻蒙原生應用隨機詩詞 Feb 19, 2024 pm 01:36 PM

想了解更多關於開源的內容,請造訪:51CTO鴻蒙開發者社群https://ost.51cto.com運行環境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、建立應用程式點擊File- >newFile->CreateProgect。選擇模版:【OpenHarmony】EmptyAbility:填寫項目名,shici,應用包名com.nut.shici,應用儲存位置XXX(不要有中文,特殊字符,空格)。 CompileSDK10,Model:Stage。 Device

C++ lambda 表達式是否支援遞迴? C++ lambda 表達式是否支援遞迴? Apr 17, 2024 pm 09:06 PM

是的,C++Lambda表達式可以透過使用std::function支援遞歸:使用std::function捕捉Lambda表達式的參考。透過捕獲的引用,Lambda表達式可以遞歸呼叫自身。

C++ 函式的遞迴實作:遞迴與非遞迴演算法的比較分析? C++ 函式的遞迴實作:遞迴與非遞迴演算法的比較分析? Apr 22, 2024 pm 03:18 PM

遞歸演算法透過函數自呼叫解決結構化的問題,優點是簡潔易懂,缺點是效率較低且可能發生堆疊溢位;非遞歸演算法透過明確管理堆疊資料結構避免遞歸,優點是效率更高且避免堆疊溢出,缺點是程式碼可能更複雜。選擇遞歸或非遞歸取決於問題和實現的特定限制。

在Java中遞歸地計算子字串出現的次數 在Java中遞歸地計算子字串出現的次數 Sep 17, 2023 pm 07:49 PM

給定兩個字串str_1和str_2。目標是使用遞歸過程計算字串str1中子字串str2的出現次數。遞歸函數是在其定義中呼叫自身的函數。如果str1是"Iknowthatyouknowthatiknow",str2是"know"出現次數為-3讓我們透過範例來理解。例如輸入str1="TPisTPareTPamTP",str2="TP";輸出Countofoccurrencesofasubstringrecursi

遞歸程式在C++中找到陣列的最小和最大元素 遞歸程式在C++中找到陣列的最小和最大元素 Aug 31, 2023 pm 07:37 PM

我們以整數數組Arr[]作為輸入。目標是使用遞歸方法在陣列中找到最大和最小的元素。由於我們使用遞歸,我們將遍歷整個數組,直到達到長度=1,然後返回A[0],這形成了基本情況。否則,將當前元素與當前最小或最大值進行比較,並透過遞歸更新其值以供後續元素使用。讓我們來看看這個的各種輸入輸出場景−輸入 −Arr={12,67,99,76,32};輸出 −數組中的最大值:99解釋 &mi

如何使用Vue表單處理實現表單的遞歸嵌套 如何使用Vue表單處理實現表單的遞歸嵌套 Aug 11, 2023 pm 04:57 PM

如何使用Vue表單處理實作表單的遞歸巢狀引言:隨著前端資料處理和表單處理的複雜性不斷增加,我們需要透過一種靈活的方式來處理複雜的表單。 Vue作為一種流行的JavaScript框架,為我們提供了許多強大的工具和特性來處理表單的遞歸巢狀。本文將向大家介紹如何使用Vue來處理這種複雜的表單,並附上程式碼範例。一、表單的遞歸巢狀在某些場景下,我們可能需要處理遞迴巢狀的

C++ 遞歸進階:瞭解尾遞歸最佳化及其應用 C++ 遞歸進階:瞭解尾遞歸最佳化及其應用 Apr 30, 2024 am 10:45 AM

尾遞歸最佳化(TRO)可提高特定遞歸呼叫的效率。它將尾遞歸呼叫轉換為跳轉指令,並將上下文狀態保存在暫存器中,而不是堆疊上,從而消除對堆疊的額外呼叫和返回操作,提高演算法效率。利用TRO,我們可以針對尾遞歸函數(例如階乘計算)進行最佳化,透過將tail遞歸呼叫替換為goto語句,編譯器會將goto跳轉移化為TRO,最佳化遞歸演算法的執行。

See all articles