一、File類構造方法
3種常見構造方法
- 1.File(String pathname),(最常用)
- 通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
- 2.File(String parent, String child)
- 從父路徑名字符串和子路徑名字符串創建新的 File實例。
- 3.File(File parent, String child)
- 從父抽象路徑名和子路徑名字符串創建新的 File實例
1.代碼
package Java學習.Java高級.IO.File類.File的3個構造方法;
import java.io.File;
/**
* 一、
* 1.File(String pathname)
* 通過將給定的路徑名字符串轉換爲抽象路徑名來創建新的 File實例。
* 2.File(String parent, String child)
* 從父路徑名字符串和子路徑名字符串創建新的 File實例。
* 3.File(File parent, String child)
* 從父抽象路徑名和子路徑名字符串創建新的 File實例
* 4. 不常用:File(URI uri)
* 二、File 重寫了toString()方法打印路徑
*/
public class Main {
public static void main(String[] args) {
System.out.println("-----1.File(String pathname)------");
File file = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習" +
"\\Java高級\\IO\\File類\\File的3個構造方法");
System.out.println(file);//
System.out.println("----------2.File(String parent, String child)------");
File file1 = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習",
"\\Java高級\\IO\\File類\\File的3個構造方法");
System.out.println(file1);
System.out.println("--------3.File(File parent, String child)--------");
File parantFile = new File("D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習");
File file2 = new File(parantFile, "\\Java高級\\IO\\File類\\File的3個構造方法");
System.out.println(file2);
System.out.println("父路徑parentFile 用對象可以調用File的方法,諸多好處");
System.out.println("最常用的是方法1 簡單直接。");
}
}
注意:構造File的時候儘量使用絕對路徑,相對路徑有相對更目錄,如果有包的話用不了,
二、Java 靜態字段。靜態分割符號
1.這個Linux系統能用到
- 一、2個靜態分割符號的字段field
-
- File.pathSeparator 路徑分割符號 String 版(windows ; linux : )
- File.pathSeparatorChar 路徑分割符 Char 類型
- 2.File.separator 分割符 (windows \ linux /)
- File.separatorChar 分割符Char類型
2 .code
package Java學習.Java高級.IO.File類.File的靜態分割符;
import java.io.File;
/**
* 一、2個靜態分割符號的字段field
* 1. File.pathSeparator 路徑分割符號 String 版(windows ; linux :)
* File.pathSeparatorChar 路徑分割符 Char 類型
* 2.File.separator 分割符 (windows \ linux /)
* File.separatorChar 分割符Char類型
*/
public class Main {
public static void main(String[] args) {
System.out.println("File.pathSeparator路徑分割符號:windows: "+ File.pathSeparator);
System.out.println("File.Separator 分割符windows: "+File.separator);
}
}
三、File常見方法。
1.獲取File信息常用4方法
*一、4個獲取功能的方法
-
- file.getAbsolutePath()
- 返回不管file是相對路徑還是絕對路徑,都返回絕對路徑
- 2.getPath()
- 就是普通的打印的toString()方法。
- 3.getName()
- 獲取結尾部分,文件或者文件夾
- 4.length()
- 文件的大小,字節,文件夾沒有大小(0)。
code
package Java學習.Java高級.IO.File類.File類方法.File類獲取功能的方法;
import java.io.File;
/**
*一、4個獲取功能的方法
* 1. file.getAbsolutePath()
* 返回不管file是相對路徑還是絕對路徑,都返回絕對路徑
* 2.getPath()
* 就是普通的打印的toString()方法。
* 3.getName()
* 獲取結尾部分,文件或者文件夾
* 4.length()
* 文件的大小,字節,文件夾沒有大小(0)。
*
*/
public class Main {
public static void main(String[] args) {
System.out.println("--------1.getAbsolutePath(File file)-----");
File file = new File("Main.java");
System.out.println("獲取絕對路徑: "+file.getAbsolutePath());
System.out.println("-----2.getPath()-----");
System.out.println("獲取file對象路徑和toString相同: "+file.getPath());
System.out.println("------3.getName()----");
System.out.println("獲取對象路徑的結尾的名稱(文件或者文件夾): "+file.getName());
System.out.println("------4.length()-----");
File file1 = new File(file.getAbsolutePath());
System.out.println("獲取文件的大小(字節)(文件夾和不存在的文件爲0): "+file1.length());
}
}
2.判斷File信息常用3方法。
package Java學習.Java高級.IO.File類.File類方法.File類判斷功能方法;
import java.io.File;
/**
* 一、三個判斷功能的方法:可用於獲取或者操作文件之前的判斷
* 1. file.exist() :
* 文件或者目錄是否存在,路徑不存在false
* 2. file.isDirectory()
* 文件目錄是否文件夾結尾 路徑不存在false
* 3. file.isFile()
* 文件目錄是否文件結尾 路徑不存在false
*/
public class Main {
public static void main(String[] args) {
File file = new File("Main.java");
System.out.println("--1. file.exist() :-----");
System.out.println(file.exists());
System.out.println("----2. file.isDirectory()---");
System.out.println(file.isDirectory());
System.out.println("----3. file.isFile() ---");
System.out.println(file.isFile());
}
}
4.操作文件File的常見方法(重要)
4.1創建和刪除目錄
1.創建和刪除目錄的4個方法,
- 一、 boolean file.createNewFile()
- 1.文件目錄不存在 拋出異常 IOException
- 2.目錄下的文件不存在返回false
- 二、boolean delete() 沒有走回收站非常危險
- 1.刪除該目錄下的文件,或者文件目錄,只有一層
- 2.成功true
- 三、boolean mkdir() :
- 1.創建目錄只能有一層
- 四、mkdirs()
- 1.可創建多層.
2.code
package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.創建刪除;
import java.io.File;
import java.io.IOException;
/**
* 一、 boolean file.createNewFile()
* 1.文件目錄不存在 拋出異常 IOException
* 2.目錄下的文件不存在返回false
* 二、boolean delete() 沒有走回收站非常危險
* 1.刪除該目錄下的文件,或者文件目錄,只有一層
* 2.成功true
* 三、boolean mkdir() :
* 1.創建目錄只能有一層
* 四、mkdirs()
* 1.可創建多層.
*/
public class Main {
private static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\Java學習" +
"\\Java高級\\IO\\File類\\File類方法\\File操作文件功能方法\\創建刪除\\";
public static void main(String[] args) throws IOException {
System.out.println("-------一a.createNewFile()----------");
File a1 = new File(url + "新文件a1.txt");
if(a1.exists()){
a1.delete();
}
System.out.println("a1.createNewFile(): " + a1.createNewFile());
System.out.println("-------二b.delete()----------");
File b1 = new File(url + "新文件b1.txt");
b1.createNewFile();
System.out.println("b1.delete(): " + b1.delete());
System.out.println("-------三c.mkdir()----------");
File c1 = new File(url + "第一層dir");
File c2 = new File(url + "2.1層\\2.2層");
if (c1.exists()) {
c1.delete();
}
if (c2.exists()) {
c2.delete();
}
System.out.println("一層c1: " + c1.mkdir());
System.out.println("同時2層 c2: " + c2.mkdir());
c1.delete();
c2.delete();
System.out.println("-------四d.----------");
File d1 = new File(url + "同時3層第1層\\同時3層第2層\\同時3層第3層");
if (d1.exists()) {
d1.delete();
}
System.out.println("d1.mkdirs(): " + d1.mkdirs());
}
}
4.2 遍歷文件夾目錄
1.給出路徑文件夾目錄的2個方法
- 一、2種方法。給出目錄數組
- 1.String[] list()
- 返回目錄名稱字符串數組 file.getName()
- 2.File[] listFiles()
- 返回目錄File類型數組,
- listFiles(new FileFilter) 還可以傳入過濾器的接口。(後面會詳講)
- 二、注意:
- 1.url不存在,file.list()返回空,再遍歷就會 空指針異常
- 2.url不是指定 目錄 ,空指針異常 nullPointerException
- 3.隱藏文件和文件夾也能識別
2.代碼
package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.遍歷文件夾目錄;
import java.io.File;
/**
* 一、2種方法。給出目錄數組
* 1.String[] list()
*
* 2.File[] listFiles()
*
* 二、注意:
* 1.url不存在,file.list()返回空,再遍歷就會 空指針異常
* 2.url不是指定 目錄 ,空指針異常 nullPointerException
* 3.隱藏文件和文件夾也能識別
*/
public class Main {
static String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src\\J" +
"ava學習\\Java高級\\IO\\File類\\File類方法\\File操作文件功能方法";
public static void main(String[] args) {
System.out.println("----1.String[] list()------");
File file1 = new File(url);
String[] list = file1.list();
if (list!=null){
for (String s : list) {
System.out.println(s);
}
}
System.out.println("-----2.File[] listFiles()----");
File file2 = new File(url);
File[] listFiles = file2.listFiles();
if(listFiles!=null){
for (File listFile : listFiles) {
System.out.println(listFile);
}
}
}
}
4.3練習項目:
目的:打印src中的所有.java 文件,,使用FileFilter文件過濾器,和遞歸知識
介紹FileFilter過濾器接口。
-
- 一、需求:打印src中的所有.java 文件,,使用FileFilter文件過濾器
- 二、使用方法 : 帶參數的listFiles()
- file.listFiles(new FileFilter{}),重寫過濾的accept方法即可。
- 三、原理 listFiles(new FileFilter{}),
- 1.獲取File的list數組,
- 2.將數組放到accept一個個判斷
- 3.true就保存起來。
代碼
package Java學習.Java高級.IO.File類.File類方法.File操作文件功能方法.遍歷文件夾目錄.練習3FileFilter文件過濾器實現練習2;
import java.io.File;
import java.io.FileFilter;
/**
* * 一、需求:打印src中的所有.java 文件,,使用FileFilter文件過濾器
* 二、使用方法 : 帶參數的listFiles()
* file.listFiles(new FileFilter{}),重寫過濾的accept方法即可。
* 三、原理 listFiles(new FileFilter{}),
* 1.獲取File的list數組,
* 2.將數組放到accept一個個判斷
* 3.true就保存起來。
*/
public class Demo {
static void useFileFiltersearchJava(File file) {
File[] listFiles = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".java") || pathname.isDirectory();
}
});
for (File listFile : listFiles) {
if (listFile.isDirectory()) {
useFileFiltersearchJava(listFile);
} else if (listFile.isFile()) {
System.out.println(listFile.getName());
}
}
}
public static void main(String[] args) {
String url = "D:\\Program Files\\JetBrains\\test1\\Lab\\src";
useFileFiltersearchJava(new File(url));
}
}