File類 的使用
import java.io.File;
import java.io.IOException;
/**
* File類
* (彌補了IO流的不足,不能對檔案夾進行操作)
* 1)用來将檔案或者檔案夾 封裝成對象
* 2)友善對檔案或者檔案夾進行操作
* 3)File對象可以作為參數傳遞給流的構造函數
* 4)了解File類中常用的方法.
*
* File 類的常見方法
* 1.建立
* boolean createNewFile():在指定的位置建立檔案,如果該檔案已經存在,則不建立,傳回false
* 和 輸出流不一樣,輸出流對象一建立就建立檔案,而且會覆寫已存在的檔案.
* //程式中需要用到臨時檔案
* File tf=createTempFile("臨時檔案","tmp");
* File tf=createTempFile("臨時檔案","tmp","c:\\system32\\");
*
* 2.删除
* boolean delete() : 删除失敗傳回 false
* void deleteOnExit(): 程式退出的時候 ,删除指定檔案
*
* 3.判斷
* boolean canExecute():如果檔案存在傳回true 表示可以操作 ,不存在傳回false 表示不能執行
* boolean canRead(); 檔案是否可讀.
* boolean canWrite(): 檔案是否可寫
* int compartTo(): 按檔案名比較
* boolean isAbsolute():是否是絕對路徑
* boolean isHidden(); 是否是隐藏檔案
*
* boolean exists():檔案是否存在
* boolean isDirectory():是否是目錄 (必須要判斷是否存在)
* boolean isFile():是否是檔案 (必須要判斷是否存在)
*
* 4.擷取資訊
* String getName();擷取檔案名
* String getPath(): 擷取路徑
* String getParent(): 擷取父目錄 如果擷取的的是相對路徑傳回的是null
* String getAbsolutePath(): 擷取絕對路徑
* File getAbsoluteFile(): 擷取絕對路勁檔案對象
* long lastModified(): 擷取檔案的組後修改時間
* long lenth(): 擷取檔案的長度.
* String getCanonicalPath();擷取規範的檔案路徑
* boolean renameTo():修改名稱
*
* File[] listRoots(): 擷取目前系統可用 盤符
* String[] list():表示的目錄中的檔案和目錄。(包含隐藏檔案 和 目錄)
*
*
*/
public class FileDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//consMethod();
//method_1();
//method_2();
//method_3();
//method_4();
//method_5();
method_6();
}
//擷取目前盤符下的檔案和目錄 (包含隐藏檔案 和 目錄)
public static void method_6(){
File f=new File("cc\\");
String[] names=f.list(); //調用 list方法的file對象必須是封裝了一個目錄,該目錄必須存在
for (String string : names) {
System.out.println(string);
}
}
//擷取盤符
public static void method_5(){
File[] files=File.listRoots();
for (File file : files) {
System.out.println(file); //
System.out.println(file.length()); //傳回目前盤符的大小
}
/*傳回:
C:\
D:\
E:\
F:\
*/
}
//修改檔案名
public static void method_4(){
File f1=new File("c:\\MyTools.java");
File f2=new File("c:\\Tools.java");
sop("rename:"+f1.renameTo(f2)); //将 MyTools.java --> Tools.java
File f3=new File("D:\\Tools.java");
sop("rename And like move:"+f1.renameTo(f3)); //發現C:\\MyTools.java 檔案 移動到 D:\\Tools.java
sop("rename And like move:"+f3.renameTo(f1)); //發現 又将 D:\\Tools.java 移動到了C:\\MyTools.java 下面了
}
//擷取檔案資訊
public static void method_3() throws IOException{
File f=new File("bb\\aa\\a.txt");
sop("path:"+f.getPath()); //擷取封裝的路徑
sop("Canonicalpath:"+f.getCanonicalPath()); //擷取封裝的路徑
sop("absPath:"+f.getAbsolutePath()); //擷取檔案的絕對路徑
sop("parentPath:"+f.getParent()); //擷取檔案的絕對路徑中的父母.如果擷取的是相對路徑,傳回null
//如果相對路徑中有上一層目錄,那麼該目錄就是傳回結果
sop("modified:"+f.lastModified()); //最後的修改時間
sop("length:"+f.length());
}
//檔案判斷
public static void method_2() throws IOException{
File f=new File("isFile.txt");
//記住判斷檔案兌現是否是檔案或者目錄的時候,必須要先判斷檔案對象封裝的内容是否存在.
//通過exists 判斷
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
/*f.createNewFile();
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
*/
//是否是絕對路徑
sop("isAbsolute:"+f.isAbsolute());
sop("isHidden:"+f.isHidden());
//誰說上面的.txt 是檔案 也可能是目錄
f.mkdir();
sop("dir:"+f.isDirectory()); //false
sop("File:"+f.isFile()); //false
sop("isHidden:"+f.isHidden());
}
//File常用方法
public static void method_1() throws IOException{
//建立檔案夾
File dir=new File("abc");
sop(dir.mkdir()); //true
//mkdir隻能建立一級目錄
File dir1=new File("bb\\kk");
sop(dir1.mkdir()); //false
//建立多級目錄
File dirs=new File("cc\\kk\\jj\\mm");
sop(dirs.mkdirs()); //true
//建立
File f=new File("file.txt");
sop("create:"+f.createNewFile());
//是否可執行
sop("execute:"+f.canExecute());
//是否可以讀
sop("read:"+f.canRead());
//是否可寫
sop("write:"+f.canWrite());
//檔案名比較
sop("compare:"+f.compareTo(new File("ab.txt")));
//檔案是否存在
sop("exists:"+f.exists());
//删除
// sop("delete:"+f.delete());
}
//構造方法示範
public static void consMethod(){
//将a.txt封裝成file對象,可以将已有的和 未出現的檔案 或者檔案夾 封裝成 file對象
File f1=new File("a.txt"); //相對路徑
//可以将 檔案名 作為參數進傳遞進來
File f2=new File("c:\\abc","b.txt");
File d=new File("c:\\abc");
File f3=new File(d,"c.txt");
sop("f1:"+f1);
sop("f2:"+f2);
sop("f3:"+f3);
//發現這個裡面的分隔符 跨平台
File f4=new File("c:\\a\\b\\c\\a.txt");
//下面的跨平台
f4=new File("c:"+File.separator+"a"+File.separator+"b"+File.separator+"c"+File.separator+"a.txt");
}
public static void sop(Object obj){
System.out.println(obj);
}
}