JAVA基礎知識之IO-File類


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()將返回一個數組,如果路徑下沒有文件和子目錄,則數組為empty
35         //如果file對象是一個文件,或者file路徑不存在,或者發生IO錯誤,則list()返回null
36         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             @Override
50             public boolean accept(File dir, String name) {
51                 // TODO Auto-generated method stub
52                 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 .classpath
11 .project
12 .settings
13 1480521332106
14 1480521357843
15 1480521378187
16 1480522448612
17 1480522471511
18 1480522477413
19 1480522484941
20 1480522505253
21 aaa2174524463556527449.txt
22 bin
23 src
24 ====系統所有磁盤根路徑如下====
25 C:\
26 D:\
27 E:\
28 F:\
29 ====過濾條件后如下====
30 .settings
31 aaa2174524463556527449.txt
32 bin
33 src

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM