(二)文件路径操作


1、File类常用API

java.io.File类用于表示文件或目录,只能用于表示文件或目录的信息,例如名称、大小等,不能用于文件内容的访问,以下较为详细的介绍了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");//一定要双斜杠,否则为转义字符
/*
File file =  new File("F:/java");
"/"反斜杠也可以作为分隔符
File file =  new File("F:"+File.separator+"java");
用File.separator作为分隔符可保证不同系统间的通用性
*/
if(!file.exists()){//判断文件或目录是否存在
    file.mkdir();//创建单一目录
}/*else{
    file.delete();//删除文件或目录
}*/

//判断是否为一个目录,如果不是目录或目录不存在,返回false
System.out.println(file.isDirectory());//true
//判断是否为一个文件
System.out.println(file.isFile());//false
//判断是否为一个隐藏文件
System.out.println(file.isHidden());//false


File file1 =  new File("F:\\a\\b\\c");
if(!file1.exists()){
    file1.mkdirs();//创建多级目录
}


File file2 = new File("F:\\.txt");
//以下为不同的表示方法
//File file2 = new File("F:",".txt");
/*
  File dir = new File("F:");
  File file2 = new File(dir,".txt");
  */
 
if(!file2.exists()){
    try {
        file2.createNewFile();//创建文件,会有异常产生,可选择捕捉该异常或直接抛出异常
    } catch (IOException e) {
        e.printStackTrace();
    }
}/*else{
file2.delete();//删除文件或目录
}*/

//相当于file.toString()的内容
System.out.println(file);//F:\java
//得到文件或目录的绝对路径字符串
System.out.println(file.getAbsolutePath());//F:\java
//得到最后一个文件或最后一级目录的名字
System.out.println(file1.getName());//c
//得到文件或目录的全部路径字符串
System.out.println(file2.getPath());//F:\.txt
//得到最后一个文件或最后一级目录的父目录名字符串
System.out.println(file1.getParent());//F:\a\b
//得到最后一个文件或最后一级目录的父目录名,再将父目录名转为绝对路径字符串
System.out.println(file2.getParentFile().getAbsolutePath());//F:\
//文件最后被修改的时间
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) {

//列出所有的系统根(不常用)
    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
.txt  
*/
        

//列出指定目录下的所有文件及文件夹,以File的形式返回
//常用此方法,因为返回的File文件可以实现更多功能
    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:\.txt
*/  

}
}


3、递归解析

递归,简单的讲,就是让某个方法调用它本身,在使用递归操作时要注意以下两点:

1.不要调用太多次,防止内存溢出
2.要有结束调用的条件,防止死循环

举一个简单的例子:

//求1至num各数相加的和
public int add(int num){
    if(num == 1){
        return 1;
    }else{
        return num+add(num-1);
    }

以下详细的解释了该方法递归的流程:



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\.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);
            }
        }
    }
}
}

创建测试类

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"));
}
}

版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓

你可能感兴趣的:((二)文件路径操作)