File類/方法詳解
阿新 • • 發佈:2019-01-31
java.io.File類
- 1.凡是與輸入、輸出相關的類、介面等都定義在java.io包下
- 2.File是一個類,可以有構造器建立其物件。此物件對應著一個檔案(.txt .avi .doc .ppt .mp3 .jpg)或檔案目錄
- 3.File類物件是與平臺無關的。
- 4.File中的方法,僅涉及到如何建立、刪除、重新命名等等。只要涉及檔案內容的,File是無能為力的,必須由io流來完成。
- 5.File類的物件常作為io流的具體類的構造器的形參。
- 6.File的靜態屬性String separator儲存了當前系統的路徑分隔符。在unix中,此欄位為
/
,在windows中,為\\
。
File類的建構函式有以下幾種:
1)File(String pathname)
2)File(String parent, String child)
3)File(File parent, String child)
4)File(URI uri)
構造的File類物件表示一個路徑,指向我們的目標檔案或資料夾。
即,如果目標檔案不存在,並不會建立物理目標檔案!
File path = new File("."); 表示當前目錄。
File path = new File("E:\\Java"); 表示Windows下的E盤裡的Java檔案(或者是資料夾),注意要用雙斜線\\。
File path = new File(new File("."),"bin"); 表示當前資料夾下的bin檔案(資料夾),如果沒有bin就會丟擲NullPointerException異常。
建立檔案、或者資料夾裡檔案物件
主要方法如下:
createNewFile()–建立新檔案物件
delete()
mkDir():建立一個檔案目錄。只有在上層檔案目錄存在的情況下,才能返回true
mkDirs():建立一個檔案目錄。若上層檔案目錄不存在,一併建立。
list()–獲取資料夾裡面的檔名字
Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname.
listFiles()–獲取資料夾裡面的檔案物件
@Test
public void test3() throws IOException{
File file1 = new File("d:/io/helloworld.txt");
System.out.println(file1.delete());
if(!file1.exists()){
boolean b = file1.createNewFile();
System.out.println(b);
}
File file2 = new File("d:\\io1\\io2");
if(!file2.exists()){
boolean b = file2.mkdirs();
System.out.println(b);
}
File file3 = new File("d:\\teach");
String[] strs = file3.list();
for(int i = 0;i < strs.length;i++){
System.out.println(strs[i]);
}
System.out.println();
File[] files = file3.listFiles();
for(int i = 0;i < files.length;i++){
System.out.println(files[i].getName());
}
}
判斷是否存在、讀寫以及路徑或者File
主要方法如下:
exists()–是否存在
canWrite()
canRead()
isFile()–判斷是否為File
isDirectory()–判斷是否路徑
lastModified()–最後一次修改時間
length()–位元組大小
@Test
public void test2(){
File file1 = new File("d:/io/helloworld.txt");
File file2 = new File("d:\\io\\io1");
System.out.println(file1.exists());
System.out.println(file1.canWrite());
System.out.println(file1.canRead());
System.out.println(file1.isFile());
System.out.println(file1.isDirectory());
System.out.println(new Date(file1.lastModified()));
System.out.println(file1.length());
System.out.println();
System.out.println(file2.exists());
System.out.println(file2.canWrite());
System.out.println(file2.canRead());
System.out.println(file2.isFile());
System.out.println(file2.isDirectory());
System.out.println(new Date(file2.lastModified()));
System.out.println(file2.length());
}
result as follows :
true
true
true
true
false
Mon Dec 05 16:45:11 CST 2016
0
true
true
true
false
true
Mon Dec 05 16:35:32 CST 2016
0
獲取檔案路徑或者檔名字,相對或者絕對,父級檔案物件,重新命名檔案
主要方法如下:
路徑:
絕對路徑:包括碟符在內的完整的檔案路徑
相對路徑:在當前檔案目錄下的檔案的路徑
getName()
getPath()
getAbsoluteFile()–得到的為File
getAbsolutePath()–得到的為String
getParent()
renameTo(File newName)
@Test
public void test1(){
//表示在專案名目錄下
File file1 = new File("1.jpg");
File file2 = new File("hello1.txt");
File file3 = new File("d:\\io\\io1");
File file4 = new File("d:\\io2");
System.out.println(file1.getName());
System.out.println(file1.getPath());
System.out.println(file1.getAbsoluteFile().getClass());
System.out.println(file1.getParent());
System.out.println(file1.getAbsolutePath().getClass());
System.out.println();
System.out.println(file3.getName());
System.out.println(file3.getPath());
System.out.println(file3.getAbsoluteFile());
System.out.println(file3.getParent());
System.out.println(file3.getAbsolutePath());
//renameTo(File newName):重新命名
//file1.renameTo(file2):file1重新命名為file2.要求:file1檔案一定存在,file2一定不存在
// boolean b = file1.renameTo(file2);
// System.out.println(b);
//
// boolean b1 = file4.renameTo(file3);
// System.out.println(b1);
}
}
result as follows :
1.jpg
1.jpg
class java.io.File
null
class java.lang.String
io1
d:\io\io1
d:\io\io1
d:\io
d:\io\io1