一、File類的理解
1、File類不能完成檔案的讀與寫。
2、FIle類代表:檔案或目錄的路徑名的抽象表示形式。
二、FIle類常用方法:
1、建立一個FIle物件:File()
File f1=new File("D:\\javaTest\\fileTest02");
2、判斷File物件是否存在:exists()
System.out.println(f1.exists());
3、新建檔案:createNewFile()
f1.createNewFile();
4、新建資料夾:mkdir()
f1.mkdir();
5、建立多重目錄:mkdirs()
File f2=new File("D:\\javaTest\\a\\b\\c");
if(!f2.exists()){
f2.mkdirs();
}
6、獲取父級目錄:getParent()
File f2=new File("D:\\javaTest\\a\\b\\c");
if(!f2.exists()){
f2.mkdirs();
}
String parentPath=f2.getParent();
System.out.println(parentPath);
執行結果:D:\javaTest\a\b
7、獲取絕對路徑目錄:getAbsolutePath()
File f3=new File("hello\\test01");
System.out.println(f3.getParent());
System.out.println(f3.getAbsolutePath());
檢視執行結果:
hello
C:\Users\Mr.White\IdeaProjects\javaAdvance\hello\test01
8、獲取名稱:getName()
9、獲取絕對檔名:getAbsoluteFile()
File f4=new File("abc");
System.out.println(f3.getName());
System.out.println(f3.getAbsoluteFile());
檢視執行結果:
test01
C:\Users\Mr.White\IdeaProjects\javaAdvance\hello\test01
10、判斷路徑是否是一個檔案:isFile()
11、判斷路徑是否是一個目錄:isDirectory()
File f1=new File("D:\\javaTest\\test01.txt");
f1.createNewFile();
System.out.println(f1.isFile());
System.out.println(f1.isDirectory());
檢視執行結果:
true
false
12、獲取最後一次修改時間,結果為13位時間戳:lastModified()
System.out.println(f1.lastModified());
13、獲取檔案的大小,單位位元組:length()
System.out.println(f1.length());
14、獲取當前目錄下所有子檔案,返回FIle陣列:listFiles()
File f=new File("D:\\javaTest");
File[] files=f.listFiles();
for(File file:files){
System.out.println(file.getAbsolutePath());
}
三、目錄拷貝,將C:\\test01目錄下內容拷貝至D:\\test01目錄下
使用FIle類,流集合遞迴完成。
1 package JAVAADVANCE;
2 import java.io.*;
3 import java.lang.reflect.Field;
4 public class TestAdvance34FileTest03Copy {
5 public static void main(String[] args) throws IOException {
6 //拷貝源.
7 File srcFile = new File( "c:\\test01");
8 //拷貝目標
9 File destFile = new File( "D:\\");
10 //呼叫方法拷貝
11 copyDir(srcFile, destFile);
12 }
13 private static void copyDir(File srcFile, File destFile) {
14 if(srcFile.isFile()) {
15 // srcFile如果是一個檔案的話,遞迴結束。
16 //是檔案的時候需要拷貝
17 //...一邊讀一邊寫
18 FileInputStream in=null;
19 FileOutputStream out=null;
20 try {
21 //讀這個檔案
22 in=new FileInputStream(srcFile);
23 //寫到這個檔案中
24 String path=(destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\\")+srcFile.getAbsolutePath().substring(3);
25 out=new FileOutputStream(path);
26 //一邊讀一邊寫
27 byte[] bytes=new byte[1024*1024];//一次複製1MB
28 int readCount=0;
29 while ((readCount=in.read(bytes))!=-1){
30 out.write(bytes,0,readCount);
31 }
32
33 } catch (FileNotFoundException e) {
34 e.printStackTrace();
35 } catch (IOException e) {
36 e.printStackTrace();
37 } finally {
38 if (out!=null){
39 try {
40 out.close();
41 } catch (IOException e) {
42 e.printStackTrace();
43 }
44 if (in !=null){
45 try {
46 in.close();
47 } catch (IOException e) {
48 e.printStackTrace();
49 }
50 }
51 }
52
53 }
54 return;
55 }
56 //獲取源下面的子目錄
57 File[] files = srcFile.listFiles();
58 for(File file : files){
59 // 獲取所有檔案的(包括目錄和檔案)絕對路徑
60 //System.out.println(file.getAbsolutePath());
61 if(file.isDirectory()){
62 //新建對應的目錄
63 //System.out.println(file.getAbsolutePath());
64 String srcDir=file.getAbsolutePath();//獲取源目錄
65 //System.out.println(srcDir.substring(3));
66 String destDir=(destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath() : destFile.getAbsolutePath()+"\\")+srcDir.substring(3);
67 //System.out.println(destDir);
68 File newFile=new File(destDir);
69 if(!newFile.exists()){
70 newFile.mkdirs();
71 }
72 }
73 //遞迴呼叫
74 copyDir(file, destFile);
75 }
76 }
77 }