java.io.File
File表示一個抽象路徑,簡單的理解爲可以訪問文件系統中的一個文件或目錄。
使用File我們可以:
* 1:訪問其表示的文件或目錄的屬性信息(名字,大小,修改時間等)。
* 2:可以操作文件或目錄(創建,刪除)。
* 3:可以訪問一個目錄中的所有子項。
但是不能訪問一個文件裏面的數據。
1.讀取文件信息的相關方法
package file;
import java.io.File;
public class FileDemo {
public static void main(String[] args) {
/*
* 訪問項目目錄下的test.txt文件
* 在使用路徑時,通常我們都使用相對路徑,因爲
* 絕對路徑的指向太明確,導致的問題是不可變動,
* 那麼在跨平臺時會出現很多問題。
* 相對目錄比較靈活,但是要清楚相對的路徑是哪裏,
* 而相對的路徑要基於程序的運行環境而定。對於我們
* 現在都是在eclipse中運行程序而言,那麼其表示的
* "當前目錄"就是當前程序所在的項目目錄。
*/
File file = new File("./test.txt");
String name = file.getName();//獲取文件名
System.out.println(name);
long length = file.length();//獲取文件大小
System.out.println(length+"字節");
boolean cr = file.canRead();//獲取文件的可讀狀態
boolean cw = file.canWrite();//獲取文件的可寫狀態
System.out.println("可讀:"+cr);
System.out.println("可寫:"+cw);
boolean ih = file.isHidden();//獲取文件的隱藏狀態
System.out.println("是否隱藏:"+ih);
/* getAbsolutePath得到的是全路徑。
* 如果構造參數是相對路徑,則返回當前目錄的絕對路徑+構造參數路徑;
* 如果是絕對路徑則直接返回
*/
String path = file.getAbsolutePath();
System.out.println(path);
}
}
2. 判斷文件是否存在:exists() 、創建一個新文件:createNewFile()
package file;
import java.io.File;
import java.io.IOException;
/**
* 使用File創建一個新文件
* @author adminitartor
*/
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
/*
* 在項目目錄下創建一個名爲:demo.txt的文件
* 1:先創建一個File表示該文件
* 2:判斷該文件是不存在的
* 3:創建該文件
*/
//1
File file = new File("./demo.txt");
//2
if(!file.exists()){
file.createNewFile();
System.out.println("文件已創建!");
}else{
System.out.println("文件已存在!");
}
}
}
3.刪除一個文件:delete()
package file;
import java.io.File;
/**
* 刪除一個文件
* @author adminitartor
*/
public class DeleteFileDemo {
public static void main(String[] args) {
/*
* 將當前目錄中的demo.txt文件刪除
*/
File file = new File("./demo.txt");
if(file.exists()){
file.delete();
System.out.println("文件已刪除!");
}else{
System.out.println("文件不存在!");
}
}
}
4.創建一個目錄:mkdir()
package file;
import java.io.File;
/**
* 創建一個目錄
* @author adminitartor
*/
public class MkDirDemo {
public static void main(String[] args) {
/*
* 在項目目錄下創建一個名爲:demo的目錄
*
* 在相對路徑中"./"可以忽略不寫,默認就是從當前
* 目錄開始
*/
// File dir = new File("./demo");
File dir = new File("demo");
if(!dir.exists()){
dir.mkdir();
System.out.println("目錄已創建!");
}else{
System.out.println("目錄已存在!");
}
}
}
5.創建一個多級目錄:mkdirs()
package file;
import java.io.File;
/**
* 創建一個多級目錄
* @author adminitartor
*/
public class MkDirsDemo {
public static void main(String[] args) {
/*
* 在當前目錄下創建目錄:a/b/c/d/e/f
*
* mkdir在創建目錄時要求其所在的父目錄必須存在
* 否則創建不成功,而mkdirs則會將所有不存在的父
* 目錄自動創建出來。
*/
File dir = new File("a/b/c/d/e/f");
if(!dir.exists()){
dir.mkdirs();
System.out.println("創建完畢!");
}else{
System.out.println("目錄已存在!");
}
}
}
6.訪問一個目錄中的所有子項:listFiles()
package file;
import java.io.File;
/**
* 訪問一個目錄中的所有子項
* @author adminitartor
*/
public class ListFilesDemo {
public static void main(String[] args) {
/*
* 獲取當前目錄中的所有子項
*/
File dir = new File(".");
/*
* boolean isFile()
* 判斷當前File表示的是否爲一個文件
*
* boolean Directory()
* 判斷當前File表示的是否爲一個目錄
*/
if(dir.isDirectory()) {
//獲取所有子項
File[] subs = dir.listFiles();
for(int i=0;i<subs.length;i++){
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
7.重載的listFiles()方法,可以傳入一個文件過濾器
package file;
import java.io.File;
import java.io.FileFilter;
/**
* File提供了一個重載的listFiles方法,可以傳入一個文件
* 過濾器,然後只將該目錄中滿足過濾器要求的子項返回。
* @author adminitartor
*/
public class ListFilesDemo2 {
public static void main(String[] args) {
/*
* 獲取項目目錄下所有名字是以"."開頭的子項
*/
File dir = new File(".");
// FileFilter filter = new MyFilter();
/*
* 使用匿名內部類形式創建文件過濾器
* 過濾條件爲:只獲取文件。
*/
FileFilter filter = new FileFilter(){
public boolean accept(File file) {
return file.isFile();
}
};
File[] subs = dir.listFiles(filter);
for(int i=0;i<subs.length;i++){
System.out.println(subs[i].getName());
}
}
}
8.刪除目錄:delete()
package file;
import java.io.File;
/**
* 刪除目錄
* @author adminitartor
*/
public class DeleteDirDemo {
public static void main(String[] args) {
/*
* 刪除項目目錄下的demo目錄
* delete方法在刪除目錄時有一個前提條件,即:
* 目錄必須是一個空目錄纔可以刪除
*/
File dir = new File("demo");
if(dir.exists()){
dir.delete();
System.out.println("目錄已刪除");
}else{
System.out.println("目錄不存在!");
}
}
}