IO知識點(一)—— Java的 File類,以及常用方法
阿新 • • 發佈:2018-12-10
注意:檔案和資料夾都是用 File 代表
1,建立一個檔案物件
使用絕對路徑或者相對路徑建立 File物件
public class AtWill { public static void main(String[] args) { // 絕對路徑 File f1 = new File("H:\\碼雲project1"); System.out.println("f1的絕對路徑:" + f1.getAbsolutePath()); // 相對路徑,相對於工作目錄,如果在eclipse中,就是專案目錄 File f2 = new File("test.txt"); System.out.println("f2的絕對路徑:" + f2.getAbsolutePath()); // 把f1作為父目錄建立檔案物件(常用) File f3 = new File(f1, "test.txt"); System.out.println("f3的絕對路徑:" + f3.getAbsolutePath()); } }
2,檔案常用方法1
注意1: 需要在H:\\碼雲project\\gogo\\確實存在一個lala1.txt,才可以看到對應的檔案長度、修改時間等資訊
注意2: renameTo方法用於對物理檔名稱進行修改,但是並不會修改File物件的name屬性。
public class AtWill { public static void main(String[] args) { File file = new File("H:\\碼雲project\\gogo\\lala1.txt"); System.out.println("當前檔案是:" +file); // 檔案是否存在 System.out.println("判斷是否存在:"+file.exists()); // 是否是資料夾 System.out.println("判斷是否是資料夾:"+file.isDirectory()); // 是否是檔案(非資料夾) System.out.println("判斷是否是檔案:"+file.isFile()); // 檔案長度 System.out.println("獲取檔案的長度:"+file.length()); // 檔案最後修改時間 long time = file.lastModified(); Date d = new Date(time); System.out.println("獲取檔案的最後修改時間:"+d); // 設定檔案修改時間為1970.1.1 08:00:00 file.setLastModified(0); // 修改後——》該檔案的最後修改時間屬性,會修改 long time6 = file.lastModified(); Date d6 = new Date(time6); System.out.println("修改了最後修改時間後,最後修改時間屬性變為:"+d6); // 檔案重新命名(lala1——》lala6) File f2 =new File("H:\\碼雲project\\gogo\\lala.text"); file.renameTo(f2); // 修改後——》該檔名屬性,並不會修改 System.out.println("修改了檔名後,檔名屬性變為:"+file); } }
3,檔案常用方法2
public class TestFile { public static void main(String[] args) throws IOException { File f = new File("d:/LOLFolder/skin/garen.ski"); // 以字串陣列的形式,返回當前資料夾下的所有檔案(不包含子檔案及子資料夾) f.list(); // 以檔案陣列的形式,返回當前資料夾下的所有檔案(不包含子檔案及子資料夾) File[]fs= f.listFiles(); // 以字串形式返回獲取所在資料夾 f.getParent(); // 以檔案形式返回獲取所在資料夾 f.getParentFile(); // 建立資料夾,如果父資料夾skin不存在,建立就無效 f.mkdir(); // 建立資料夾,如果父資料夾skin不存在,就會建立父資料夾 f.mkdirs(); File f = new File("H:\\碼雲project1\\test3"); // 建立一個空檔案,如果父資料夾skin不存在,就會丟擲異常 f.createNewFile(); // 所以建立一個空檔案之前,通常都會建立父目錄 f.getParentFile().mkdirs(); try { f.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 列出所有的碟符c: d: e: 等等 File[] sss = f.listRoots(); for(File file2 : sss) { System.out.println(file2); } // 刪除檔案 f.delete(); // JVM結束的時候,刪除檔案,常用於臨時檔案的刪除 f.deleteOnExit(); } }
4,練習-遍歷資料夾1
一般說來作業系統都會安裝在C盤,所以會有一個 C:\WINDOWS目錄。
遍歷這個目錄下所有的檔案(不用遍歷子目錄)
找出這些檔案裡,最大的和最小(非0)的那個檔案,打印出他們的檔名
注: 最小的檔案不能是0長度
public class AtWill {
public static void main(String[] args) {
File file = new File("C:\\WINDOWS");
File[] files = file.listFiles();
File max = null;
File min = null;
// 取出一個位元組大小大於0的檔案,用於作為判斷最大或最小初始檔案
for(File f : files) {
if(f.length() != 0) {
max = f;
min = f;
break;
}
}
for(int i=0; i<files.length; i++) {
if(max.length() < files[i].length()) {
max = files[i];
}
}
for(int i=0; i<files.length; i++) {
if(min.length() > files[i].length() && files[i].length()!=0) {
min = files[i];
}
}
System.out.println("最大的檔案是:"+max+" ,其位元組大小是"+max.length());
System.out.println("最小的檔案是:"+min+" ,其位元組大小是"+min.length());
}
}
5,練習-遍歷子資料夾1(遞迴)
public class AtWill {
public static void main(String[] args) {
File file = new File("H:\\碼雲project");
File f[] = file.listFiles();
show(f);
}
public static void show(File dir[]) {
if (dir == null) {
return;
} else {
for (File fi : dir) {
if (fi.isDirectory()) {
show(fi.listFiles());
}
if (fi.isFile()) {
System.out.println(fi.getName());
}
}
}
}
}
參考來源於:
http://how2j.cn/k/io/io-file/345.html#nowhere