1、File類常用API
java.io.File類用于表示文件或目錄胳徽,只能用于表示文件或目錄的信息养盗,例如名稱往核、大小等,不能用于文件內(nèi)容的訪問硫痰,以下較為詳細(xì)的介紹了File類的一些常用方法非春。
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileDemo {
public static void main(String[] args){
File file = new File("F:\\java");//一定要雙斜杠奇昙,否則為轉(zhuǎn)義字符
/*
File file = new File("F:/java");
"/"反斜杠也可以作為分隔符
File file = new File("F:"+File.separator+"java");
用File.separator作為分隔符可保證不同系統(tǒng)間的通用性
*/
if(!file.exists()){//判斷文件或目錄是否存在
file.mkdir();//創(chuàng)建單一目錄
}/*else{
file.delete();//刪除文件或目錄
}*/
//判斷是否為一個(gè)目錄,如果不是目錄或目錄不存在滨溉,返回false
System.out.println(file.isDirectory());//true
//判斷是否為一個(gè)文件
System.out.println(file.isFile());//false
//判斷是否為一個(gè)隱藏文件
System.out.println(file.isHidden());//false
File file1 = new File("F:\\a\\b\\c");
if(!file1.exists()){
file1.mkdirs();//創(chuàng)建多級(jí)目錄
}
File file2 = new File("F:\\簡(jiǎn)書.txt");
//以下為不同的表示方法
//File file2 = new File("F:","簡(jiǎn)書.txt");
/*
File dir = new File("F:");
File file2 = new File(dir,"簡(jiǎn)書.txt");
*/
if(!file2.exists()){
try {
file2.createNewFile();//創(chuàng)建文件闽撤,會(huì)有異常產(chǎn)生柳恐,可選擇捕捉該異忱稚瑁或直接拋出異常
} catch (IOException e) {
e.printStackTrace();
}
}/*else{
file2.delete();//刪除文件或目錄
}*/
//相當(dāng)于file.toString()的內(nèi)容
System.out.println(file);//F:\java
//得到文件或目錄的絕對(duì)路徑字符串
System.out.println(file.getAbsolutePath());//F:\java
//得到最后一個(gè)文件或最后一級(jí)目錄的名字
System.out.println(file1.getName());//c
//得到文件或目錄的全部路徑字符串
System.out.println(file2.getPath());//F:\簡(jiǎn)書.txt
//得到最后一個(gè)文件或最后一級(jí)目錄的父目錄名字符串
System.out.println(file1.getParent());//F:\a\b
//得到最后一個(gè)文件或最后一級(jí)目錄的父目錄名近尚,再將父目錄名轉(zhuǎn)為絕對(duì)路徑字符串
System.out.println(file2.getParentFile().getAbsolutePath());//F:\
//文件最后被修改的時(shí)間
System.out.println(new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss").format(new Date(file2.lastModified())));//2017-03-01 星期三 16:09:36
}
}
2、獲得指定目錄文件列表
import java.io.File;
public class FileDemo2 {
public static void main(String[] args) {
//列出所有的系統(tǒng)根(不常用)
File[] dir1 = File.listRoots();
for(File dir: dir1){
System.out.println(dir);
}
/*
C:\
D:\
E:\
F:\
*/
//列出指定目錄下的所有文件及文件夾格遭,以字符串的形式返回
File dir2 = new File("F:\\");
String[] arr = dir2.list();
for(String ss: arr){
System.out.println(ss);
}
/*
GAME
a
java
movie
sc
簡(jiǎn)書.txt
*/
//列出指定目錄下的所有文件及文件夾拒迅,以File的形式返回
//常用此方法前硫,因?yàn)榉祷氐腇ile文件可以實(shí)現(xiàn)更多功能
File dir3 = new File("F:\\");
File[] arr1 = dir3.listFiles();
for(File f: arr1){
System.out.println(f.getAbsolutePath());
}
/*
F:\GAME
F:\a
F:\java
F:\movie
F:\sc
F:\簡(jiǎn)書.txt
*/
}
}
3屹电、遞歸解析
遞歸嗤详,簡(jiǎn)單的講,就是讓某個(gè)方法調(diào)用它本身娘香,在使用遞歸操作時(shí)要注意以下兩點(diǎn):
1.不要調(diào)用太多次,防止內(nèi)存溢出
2.要有結(jié)束調(diào)用的條件翔忽,防止死循環(huán)
舉一個(gè)簡(jiǎn)單的例子:
//求1至num各數(shù)相加的和
public int add(int num){
if(num == 1){
return 1;
}else{
return num+add(num-1);
}
以下詳細(xì)的解釋了該方法遞歸的流程:

4、遍歷目錄
列出指定目錄及其子目錄下的所有文件:
import java.io.File;
public static void main(String[] args){
File dir = new File("F:\\java");
lists(dir);
}
public static void lists(File dir){
//輸出目錄
System.out.println("dir:"+dir);
//遞歸子目錄
File[] files = dir.listFiles();
for (File file : files) {
if(file.isDirectory()){
lists(file);
}else{
//輸出文件
System.out.println("file:"+file);
}
}
}
/*
dir:F:\java
dir:F:\java\a
dir:F:\java\a\a1
dir:F:\java\a\a2
file:F:\java\a\a2\a3.txt
dir:F:\java\b
dir:F:\java\b\b1
dir:F:\java\b\b1\b2
dir:F:\java\c
dir:F:\java\c\c4
file:F:\java\簡(jiǎn)書.txt
*/
5、整理成工具類
import java.io.File;
import java.io.IOException;
public class FileUtils {
/**
* 列出指定目錄及其子目錄下的所有文件
* @param dir
* @throws IOException
*/
public static void listDirectory(File dir)throws IOException{
if(!dir.exists()){
throw new IllegalArgumentException("目錄:"+dir+"不存在");
}
if(!dir.isDirectory()){
throw new IllegalArgumentException(dir+"不是目錄");
}
System.out.println("dir:"+dir);
File[] files = dir.listFiles();
if(files!=null&&files.length>0){
for (File file : files) {
if(file.isDirectory()){
listDirectory(file);
}else{
System.out.println("file:"+file);
}
}
}
}
}
創(chuàng)建測(cè)試類
import java.io.File;
import java.io.IOException;
public class FileUtilsTest {
public static void main(String[] args) throws IOException {
FileUtils.listDirectory(new File("F:\\java"));
}
}
版權(quán)聲明:歡迎轉(zhuǎn)載,歡迎擴(kuò)散旨别,但轉(zhuǎn)載時(shí)請(qǐng)標(biāo)明作者以及原文出處昼榛,謝謝合作胆屿! ↓↓↓