路徑常量
靜態的,設置路徑常量的目的是為了方便跨平臺。
- Path-separator 即路徑分隔符 File.pathseparator(windows下為";")
- name-separator 即名稱分隔符File.separator(windows下為"",linux下為"/")
- 三種方式
- Strinng path="E:\test\2.jpg";
- Strinng path="E"+FIle.separator+"test"+File.separator+"2.jpg";
- Strinng path="E:/test/2.jpg";(推薦使用這種!)
絕對路徑與相對路徑,構造器
- 相對路徑
File(String parent,String child)-------------->File("E:/xp/test","2.jpg");
File(File parent,String child)----------------->File(new File("E:/xp/test"),"2.jpg"); - 絕對路徑
File(String name);
如果給的路徑沒有盤符,就會在當前的工作空間下創建。此為相對路徑,但是沒有父目錄。
常用方法
- 文件名相關
getName();返回文件名,文件夾也是的。
getPath();返回路徑,若是相對應工作空間下的相對路徑,就返回相對路徑。
getAbsolutePath():返回絕對路徑。可用來查看相應的工作空間。
getAbsoluteFile();等同于new File(this.getAbsolutePath());
getParent();返回文件的最近一層目錄,如果是相對路徑且沒有指定父目錄,則返回空。
<br /> - 判斷信息(讀取的是信息而不是文件的內容,所以不會拋出異常)
exists();判斷文件是否存在
canWrite();
canRead();判斷是否可讀或可寫。文件夾也可以判斷。
isFile();判斷是不是文件,如果不存在返回false
isDirectory();判斷是否為文件夾,不存在也返回false
isAbsolute();判斷是否為絕對路徑
<br /> - 長度
length();
只有文件才能讀出長度,文件夾會返回0。
<br /> - 創建和刪除文件
createNewFile();不存在則創建新文件返回true,存在則返回false表示創建失敗
delete();返回boolean表示成功或者失敗
臨時文件(靜態方法):
createTempFile(前綴3個字節長,后綴默認為.temp)創建在默認臨時空間
createTempFile(前綴3個字節長,后綴默認為.temp,目錄文件)創建在對應目錄下
deleteOnExit();推出虛擬機時刪除(程序退出時),常用于刪除臨時文件。
public static void main(String[] args) {
File temp=null;
try {
//創建臨時文件
temp=File.createTempFile("vik", ".temp",new File("F:/javaIotest"));
//等5秒
Thread.sleep(5000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//在finally里面,刪除
temp.deleteOnExit();
}
}
- 操作目錄的方法
mkdir();創建目錄,必須確保父目錄存在,否則創建失敗
mkdirs();如果父目錄鏈不存在,則一同創建
list();子文件或目錄的字符串形式,用數組接收
listFiles();子文件或目錄的文件對象,用數組接收
靜態方法:File.listRoots 得到所有的根目錄
命令設計模式
listFiles(new FilenameFilter(){匿名內部類重寫accept方法});過濾,得到符合條件的文件
利用listFiles();方法打印目錄下所有文件,使用遞歸
public static void main(String[] args) {
File parent=new File("F:/javaIotest");
printFiles(parent);
}
public static void printFiles(File parent){
File[] files=parent.listFiles();
for(File temp:files){
System.out.println(temp.getAbsolutePath());
if(temp.isDirectory())
printFiles(temp);
}
}
利用命令設計模式,過濾得到jpg后綴的文件
public static void printFiles(File parent){
//命令設計模式,FilenameFilter重寫accept方法
File[] files=parent.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name) {
//與那個參與篩選的文件建立聯系
File f=new File(dir,name);
//如果是目錄那么也通過
if(f.isDirectory()){
return true;
}
//不是目錄是文件,就篩選是否以.jpg結尾的文件
return name.endsWith(".jpg");
}});
//遍歷,如果是目錄遞歸調用自己,如果是文件就打印名字
for(File temp:files){
if(temp.isDirectory())
printFiles(temp);
else System.out.println(temp.getName());
}
}