1、File類的理解java
一、File類不能完成文件的讀與寫。數組
二、FIle類表明:文件或目錄的路徑名的抽象表示形式。spa
2、FIle類經常使用方法:code
一、建立一個FIle對象:File()對象
File f1=new File("D:\\javaTest\\fileTest02");
二、判斷File對象是否存在:exists()blog
System.out.println(f1.exists());
三、新建文件:createNewFile()遞歸
f1.createNewFile();
四、新建文件夾:mkdir()get
f1.mkdir();
五、建立多重目錄:mkdirs()string
File f2=new File("D:\\javaTest\\a\\b\\c"); if(!f2.exists()){ f2.mkdirs(); }
六、獲取父級目錄:getParent()it
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
七、獲取絕對路徑目錄: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
八、獲取名稱:getName()
九、獲取絕對文件名: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
十、判斷路徑是不是一個文件:isFile()
十一、判斷路徑是不是一個目錄:isDirectory()
File f1=new File("D:\\javaTest\\test01.txt"); f1.createNewFile(); System.out.println(f1.isFile()); System.out.println(f1.isDirectory());
查看執行結果:
true
false
十二、獲取最後一次修改時間,結果爲13位時間戳:lastModified()
System.out.println(f1.lastModified());
1三、獲取文件的大小,單位字節:length()
System.out.println(f1.length());
1四、獲取當前目錄下全部子文件,返回FIle數組:listFiles()
File f=new File("D:\\javaTest"); File[] files=f.listFiles(); for(File file:files){ System.out.println(file.getAbsolutePath()); }
3、目錄拷貝,將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 }