1.1.3.2.10 獲取文件信息
迄今為止我們的討論圍繞單一的文件輸入輸出。但是加速I/O性能還有另一方面--和得到文件特性有關。例如,考慮一個打印文件長度的小程序:
import java.io.*;
public class length1 {
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("missing filename");
System.exit(1);
}
File f = new File(args[0]);
long len = f.length();
System.out.println(len);
}
}
Java運行時系統(tǒng)自身并不知道文件的長度,因此必須向底層的操作系統(tǒng)查詢以獲得這個信息,對于文件的其他信息這也成立,例如文件是否是一個目錄,文件上次修改時間等等。 java.io包中的File 類提供一套查詢這些信息的方法。這些方法總體來說在時間上開銷很大因此應該盡可能少用。
下面是一個查詢文件信息的更長的范例,它遞歸整個文件系統(tǒng)寫出所有的文件路徑:
import java.io.*;
public class roots {
public static void visit(File f) {
System.out.println(f);
}
public static void walk(File f) {
visit(f);
if (f.isDirectory()) {
String list[] = f.list();
for (int i = 0; i < list.length; i++)
walk(new File(f, list[i]));
}
}
public static void main(String args[]) {
File list[] = File.listRoots();
for (int i = 0; i < list.length; i++) {
if (list[i].exists())
walk(list[i]);
else
System.err.println("not accessible: " + list[i]);
}
}
}
這個范例使用 File 方法,例如 isDirectory 和 exists,穿越目錄結構。每個文件都被查詢一次它的類型 (普通文件或者目錄)。
這個范例使用 File 方法,例如 isDirectory 和 exists,穿越目錄結構。每個文件都被查詢一次它的類型 (普通文件或者目錄)。
這個范例使用 File 方法,例如 isDirectory 和 exists,穿越目錄結構。每個文件都被查詢一次它的類型 (普通文件或者目錄)。
相關推薦:計算機等級考試二級Java經典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |