JAVA基礎知識之IO-File類

來源:互聯網
上載者:User

標籤:package   work   基礎知識   director   ring   出錯   basic   string   操作   

File類介紹

File是java.io包下面的一個類,代表與平台無關的檔案或者目錄。JAVA中,無論檔案還是目錄,都可以看作File類的一個對象。File類能對檔案或目錄建立,刪除,擷取屬性等操作,但是不能直接操作檔案內容(檔案內容需要用資料流訪問)。

JVM預設會將workspace作為相對路徑,即user.dir系統變數所指路徑, 即如果這樣初始化file對象,File file = new File("."); 就是擷取了user.dir路徑。

File類的常用方法

String getName() -如果file對象是一個檔案,則返迴文件名,如果是路徑,則返迴路徑的最後一級

File getAbsoluteFile() -返回絕對路徑

String getParent() -返回file對象所在目錄的父目錄

File類檢查檔案

exists()-檔案或目錄是否存在

canRead()-是否可讀

isFile()-是否是檔案

isDirectory()-是否是目錄

File類擷取檔案屬性

long lastModified() -最後修改時間

long length() -檔案長度

File類進行檔案操作

createFile() -成功true,失敗false

delete()

mkdir() -建立目錄 ,file對象必須對應一個路徑

String[] list() - 如果file對象是一個路徑,list()將返回一個數組,如果路徑下沒有檔案和子目錄,則數組為empty;如果file對象是一個檔案,或者file路徑不存在,或者發生IO錯誤,則list()返回null

File[] listFiles() -同上,只不過返回的是File類型數組

檔案過濾器FilenameFilter介面

如果FilenameFilter作為file.list()的參數傳入,實現FilenameFilter介面的accept方法,可以實現檔案過濾。

accept方法有兩個參數,dir和name,通常可以對name做條件過濾。

 

下面是File類的綜合示範,

 1 package io; 2  3 import java.io.File; 4 import java.io.FilenameFilter; 5 import java.io.IOException; 6  7 public class FileTest { 8     public static void main(String[] args) throws IOException { 9         //JVM預設會將workspace作為相對路徑,即user.dir系統變數所指路徑10         File file = new File(".");11         File file2 = new File("C:/PROJECT/JavaBasic/PROJECT_JavaBasic/tmp.txt");12         File file3 = new File("./tmp.txt");13         //如果file對象是一個檔案,則返迴文件名,如果是路徑,則返迴路徑的最後一級14         System.out.println(file.getName());15         //當file為相對路徑時,擷取父路徑可能會出錯16         file3.delete();17         System.out.println("父路徑:"+file3.getParent());18         //擷取絕對路徑 19         System.out.println(file.getAbsoluteFile());20         //getAbsoluteFile返回的是File類型, getAbsolutePath則返回String類型21         System.out.println(file.getAbsoluteFile().getParent());22         //在當前路徑下建立一個臨時檔案,第三個參數必須是路徑,否則會報錯23         File tmpFile = File.createTempFile("aaa", ".txt", file);24         //JVM退出時刪除該檔案25         tmpFile.deleteOnExit();26         //以系統時間作為名稱建立檔案27         File newFile = new File(System.currentTimeMillis()+"");28         System.out.println("newFile是否存在:"+newFile.exists());29         //以指定file對象來建立檔案30         newFile.createNewFile();31         System.out.println("newFile是否存是檔案:"+newFile.isFile());32         System.out.println("newFile是否存是目錄:"+newFile.isDirectory());33         System.out.println("以newFile對象建立目錄是否成功:"+newFile.mkdir());34         //如果file對象是一個路徑,list()將返回一個數組,如果路徑下沒有檔案和子目錄,則數組為empty35         //如果file對象是一個檔案,或者file路徑不存在,或者發生IO錯誤,則list()返回null36         String[] fileList = file.list();37         System.out.println("====當前路徑下的所有檔案和目錄如下====");38         for (String fileName : fileList) {39             System.out.println(fileName);40         }41         //listRoots靜態方法列出所有磁碟根路徑42         File[] roots = File.listRoots();43         System.out.println("====系統所有磁碟根路徑如下====");44         for (File root : roots) {45             System.out.println(root);46         }    47         48         String[] nameList = file.list(new FilenameFilter() {49             @Override50             public boolean accept(File dir, String name) {51                 // TODO Auto-generated method stub52                 return name.endsWith(".txt") || new File(name).isDirectory();53             }54         });55         System.out.println("====過濾條件後如下====");56         for (String filterName :  nameList) {57             System.out.println(filterName);58         }59         60     }61 }

輸出結果如下,

 1 . 2 父路徑:. 3 C:\PROJECT\JavaBasic\PROJECT_JavaBasic\. 4 C:\PROJECT\JavaBasic\PROJECT_JavaBasic 5 newFile是否存在:false 6 newFile是否存是檔案:true 7 newFile是否存是目錄:false 8 以newFile對象建立目錄是否成功:false 9 ====當前路徑下的所有檔案和目錄如下====10 .classpath11 .project12 .settings13 148052133210614 148052135784315 148052137818716 148052244861217 148052247151118 148052247741319 148052248494120 148052250525321 aaa2174524463556527449.txt22 bin23 src24 ====系統所有磁碟根路徑如下====25 C:26 D:27 E:28 F:29 ====過濾條件後如下====30 .settings31 aaa2174524463556527449.txt32 bin33 src

 

JAVA基礎知識之IO-File類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.