一、File的定義和構造方法
File是一個類,在java.io.File包下,需要進行導包
import java.io.File;
/*
File【檔案】: 是計算機中所有檔案的抽象表示, 將來File物件目標可能存在,也可能不存在。
構造方法:
public File(String pathname)
public File(String parent,String child)
public File(File parent,String child)
路徑:
絕對路徑【完整路徑】:D:\projects\IdeaProjects\bigdara32\java\src\com\shujia\day15\ketang\a1.txt
相對路徑:java/src/com/shujia/day15/ketang/a1.txt
*/
public class FileDemo1 {
public static void main(String[] args) {
//public File(String pathname)
// File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang\\a1.txt");
// System.out.println(f1);
// File f2 = new File("java/src/com/shujia/day15/ketang/a1.txt");
// System.out.println(f2);
//public File(String parent,String child)
// File f1 = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang","a1.txt");
// System.out.println(f1);
//public File(File parent,String child)
File file = new File("D:\\projects\\IdeaProjects\\bigdara32\\java\\src\\com\\shujia\\day15\\ketang");
File f1 = new File(file, "a1.txt");
System.out.println(f1);
}
}
二、其中的成員方法
import java.io.File;
/*
建立功能
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
刪除功能
public boolean delete()
重新命名功能
public boolean renameTo(File dest)
*/
public class FileDemo2 {
public static void main(String[] args) throws Exception{
File file = new File("java/src/com/shujia/day15/ketang/a1.txt");
//public boolean createNewFile()
// System.out.println(file.createNewFile());
//public boolean mkdir() 建立單極資料夾
// System.out.println(file.mkdir());
//public boolean mkdirs() 建立多極資料夾
// System.out.println(file.mkdirs());
//public boolean delete() 只能刪除空資料夾,或一個檔案
// System.out.println(file.delete());
//public boolean renameTo(File dest)
// File file2 = new File("java/src/com/shujia/day15/ketang/李剛.txt");
// System.out.println(file.renameTo(file2));
}
}
2.判斷
/*
判斷功能
public boolean isDirectory()
public boolean isFile()
public boolean exists()
public boolean canRead()
public boolean canWrite()
public boolean isHidden()
*/
public class FileDemo3 {
public static void main(String[] args) {
File file = new File("java/src/com/shujia/day15/ketang/李剛.txt");
// public boolean isDirectory()
System.out.println(file.isDirectory());
//public boolean isFile()
System.out.println(file.isFile());
//public boolean exists()
System.out.println(file.exists());
//public boolean canRead() 是否可讀
System.out.println(file.canRead());
//public boolean canWrite() 是否可寫
System.out.println(file.canWrite());
//public boolean isHidden() 是否被隱藏
System.out.println(file.isHidden());
}
}
3.基本獲取
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
基本獲取功能
public String getAbsolutePath()
public String getPath()
public String getName()
public long length()
public long lastModified()
*/
public class FileDemo4 {
public static void main(String[] args) {
File file = new File("java/src/com/shujia/day15/ketang/李剛.txt");
// public String getAbsolutePath() 獲取絕對路徑
System.out.println(file.getAbsolutePath());
//public String getPath() 獲取相對路徑
System.out.println(file.getPath());
//public String getName() 獲取檔案或資料夾的名字
System.out.println(file.getName());
//public long length() 獲取檔案中位元組數
System.out.println(file.length());
//public long lastModified() 獲取上一次修改的時間戳【毫秒級別的】
// System.out.println(file.lastModified());
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date(file.lastModified()));
System.out.println("上一次修改的時間:"+time);
}
}
4.高階獲取
import java.io.File;
/*
高階獲取功能
public String[] list()
public File[] listFiles()
*/
public class FileDemo5 {
public static void main(String[] args) {
File file = new File("java/src/com/shujia/day15/ketang");
//public String[] list() 將目錄下所有的檔案以及資料夾的名字放到一個陣列中返回
String[] nameList = file.list();
if(nameList!=null){
for (String s : nameList) {
System.out.println(s);
}
}
// assert nameList!=null;
// for (String s : nameList) {
// System.out.println(s);
// }
//public File[] listFiles() 將目錄下所有的檔案以及資料夾都封裝成一個一個的File物件放到一個陣列中
File[] files = file.listFiles();
if(files!=null){
for (File file1 : files) {
System.out.println(file1);
}
}
}
}
三、練習
import java.io.File;
//需求:獲取ketang目錄下所有.txt字尾的檔案
public class FileDemo6 {
public static void main(String[] args) {
File file = new File("java/src/com/shujia/day15/ketang");
//獲取當前目錄下所有的檔案或者資料夾的集合
File[] files = file.listFiles();
if(files!=null){
for (File file1 : files) {
if(file1.isFile() && file1.getName().endsWith(".txt")){
System.out.println(file1.getName());
}
}
}
}
}
6.練習2
import java.io.File;
import java.io.FilenameFilter;
/*
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
*/
public class FileDemo7 {
public static void main(String[] args) {
File file = new File("java/src/com/shujia/day15/ketang");
//public File[] listFiles(FilenameFilter filter)
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// 當這裡返回true的時候,表示將檔案放到陣列中
// dir表示當前目錄,name表示檔案或者資料夾名字
File f = new File(dir, name);
return f.isFile() && f.getName().endsWith(".txt");
}
});
if(files!=null){
for (File file1 : files) {
System.out.println(file1);
}
}
}
}