一.檔案或者檔案目錄的封裝
package java_Studing_day48_IO流8_file;
import java.io.File;
public class fileDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
constractorDemo();
}
private static void constractorDemo() {
// 可以将一個已存在的或者不存在的檔案或者目錄封裝成對象
File f1=new File("f1.txt");
File f2=new File("c:\\","f2.txt");
//可以先将路徑封裝成對象,便于管理路徑
File f=new File("c:\\");
File f3=new File(f,"file3.txt");//路徑加檔案名
File f4=new File("c:\\abc\\f4.txt");
File f5=new File("c:"+System.getProperty("file.separator")+"abc\\f4.txt");
//file.separator,路徑分隔符
File f6=new File("c:"+File.separator+"abc"+File.separator+"f4.txt");
System.out.println(f4);
System.out.println(f5);
System.out.println(f6);
}
}
二.File類對檔案或者目錄的基本操作
package java_Studing_day48_IO流8_file;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.util.Date;
public class filefunctionDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//changefile();
//getDemo();
//creatAndDeleteDemo();
//isDemo();
//reName();
listRootsDemo();
}
private static void listRootsDemo() {
File file=new File("c:\\");//将D盤封裝成對象
System.out.println("getFreeSpace:"+file.getFreeSpace());//擷取目前對象空閑空間
System.out.println("getTotalSpace:"+file.getTotalSpace());//擷取目前對象總空間容量
System.out.println("getUsableSpace:"+file.getUsableSpace());//擷取目前對象可用空間容量
// 擷取系統根目錄
// File[] files=File.listRoots();
// for(File file:files){
// System.out.println(file);
// }
}
private static void reName() {
// TODO Auto-generated method stub
File f1=new File("a.txt");
File f2=new File("c.txt");
File f3=new File("d:\\cc.txt");
//将同一路徑下的檔案重命名
boolean b=f1.renameTo(f2);
//如果檔案路徑變了,檔案會被剪切并重命名到新的路徑
boolean d=f2.renameTo(f3);
System.out.println(b);
System.out.println(d);
}
private static void isDemo() throws IOException {
// TODO Auto-generated method stub
File file=new File("jorian1.txt");//封裝路徑或者檔案名為一個對象
boolean b=file.exists();
//file.createNewFile();
file.mkdir();
boolean c=file.isDirectory();//是否是檔案夾
boolean d=file.isFile();//是否是檔案
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
private static void creatAndDeleteDemo() throws IOException {
File dir=new File("dd");//其實封裝的是最後qqw檔案夾
File dirs=new File("gg\\asddf\\sdf\\aslk\\asdhj\\df\\df\\df\\e\\r\\t\\y\\qqw");//其實封裝的是最後qqw檔案夾
boolean b=dir.mkdir(); //建立檔案夾
dirs.mkdirs();//建立多級檔案夾
//dir.delete();
//dir.deleteOnExit(); //隻會删除qqw檔案夾,因為dir中封裝的其實就是qqw檔案夾
File file=new File("d:\\file.txt");
//
boolean a=file.createNewFile();//如果檔案不存在建立,如果檔案存在報False
//
// boolean f=file.delete();//直接删除
// file.deleteOnExit();//程式退出時删除
// System.out.println(a);
}
private static void changefile() throws IOException {
// TODO Auto-generated method stub
BufferedWriter bfw=new BufferedWriter(new FileWriter("a.txt"));
bfw.write("Jorian是個大帥哥");
bfw.close();
}
public static void getDemo() {
File file=new File("xxxxx.txt");//第一步,封裝檔案或者檔案目錄為對象
String name=file.getName();//檔案名
String abPath=file.getAbsolutePath();//絕對路徑
String path=file.getPath();//相對路徑
long len=file.length();//檔案大小
long time=file.lastModified();//檔案最後一次了修改時間,此方法可以用來判斷檔案最後一次了的修改時間,判斷是否需要重新讀取檔案
//時間格式轉換
Date date=new Date(time);
DateFormat dateFormat =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
String dtime=dateFormat.format(date);
System.out.println("name:"+name);
System.out.println("abPath:"+abPath);//絕對路徑,具體的路徑
System.out.println("path:"+path);//相對路徑,沒有指定前邊的路徑
System.out.println("len:"+len);
System.out.println("time:"+dtime);
}
}
三.list方法周遊指定檔案目錄,FileFilter的使用
1>>
package java_Studing_day48_IO流8_file;
import java.io.File;
public class FilelistDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
listDemo();
listDemo2();
}
private static void listDemo2() {
// TODO Auto-generated method stub
File dir=new File("D:\\");
String [] names=dir.list(new fileFilter());
for(String name:names){
System.out.println(name);
}
}
public static void listDemo() {
File file=new File("d:\\");
String[] names=file.list();//擷取目前路徑下檔案或者檔案夾名稱清單,包括隐藏檔案
for(String name:names){//周遊names,将每一次周遊到的值放在name中
System.out.println(name);
}
}
}
2>>>
package java_Studing_day48_IO流8_file;
import java.io.File;
import java.io.FilenameFilter;
public class fileFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
System.out.println(dir+"--------"+name);
return name.endsWith(".java");//傳回以.java結尾的檔案
}
}
四.練習,擷取本機最大空閑容量的盤符
package java_Studing_day48_IO流8_file;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class getMaxFreeSpaceDir {
public static void main(String[] args) {
// 擷取系統目錄下最大容量的盤符
get();
}
private static void get() {
File[] files=File.listRoots();//将擷取到的所有盤符放到一個目錄數組裡
long max = 0 ; //定義最大容量值
Map map= new HashMap();//定義一個map集合
for(int i=0;i<files.length;i++){//周遊盤符
String dir=files[i].toString();//将每個盤符轉成String類型
File file=new File(dir); //将盤符封裝成file對象
long fs=file.getFreeSpace(); //擷取盤符的空閑容量
map.put(fs, dir);//通過Map将空閑容量和 盤符對應起來
max=max>=fs?max:fs;//重新整理最大容量值
}
System.out.println(map.get(max));//通過容量搜尋Map裡邊對應盤符
}
}