【I/O】File类和递归打印目录树

简介:

  File类是文件和目录路径名的抽象表示,是一种对文件系统的映射,本身并不是硬盘上真实的文件。我们可以通过创建该类的对象操作被映射的硬盘中的文件,对硬盘中的文件和目录进行创建、查找和删除等,但并不能直接操控文件内容。

File类:

分隔符常量:

保证了跨平台性。在Windows平台下,名称分隔符用左斜杠 " / " 或者右斜杠 " \ " 都可以,但Unix/Linux平台下只能用左斜杠 " / "。为了保证代码跨平台运行,推荐使用分隔符常量。
注:右斜杠要转义使用 " \\ "

  • 名称分隔符
    与系统有关的名称分隔符,Unix/Linux系统是左斜杠 " / ",Windows是右斜杠 " \ "。
public static final char separatorChar = fs.getSeparator();

public static final String separator = "" + separatorChar;
  • 路径分割符
    与系统有关的路径分隔符,Unix/Linux是冒号 " : ",Windows是分号 " ; "。
public static final char pathSeparatorChar = fs.getPathSeparator();

public static final String pathSeparator = "" + pathSeparatorChar;
  • 使用例子
    路径:A:\JAVA\Java_Projects
Windows平台书写
String pathName = "A:\\JAVA\\Java_Projects";
String pathName = "A:/JAVA/Java_Projects";

Unix/Linux平台书写
String pathName = "A:/JAVA/Java_Projects";

跨平台书写
String pathName = "A:"+File.separator+ "JAVA"+File.separator+"Java_Projects";

构造函数:

注:只是建立了对文件系统的映射,并不是创建了文件。且它不考虑路径的真假情况,所以当目标文件不存在时,File对象也会创建成功。
  当路径是是相对路径时,默认当前目录下。

通过给定的父抽象路径和子路径字符串创建一个File实例。
File(File parent, String child);

通过将给定路径字符串创建一个File实例。
File(String pathname) 

根据parent路径字符串和child路径字符串创建一个File实例。
File(String parent, String child) 

通过URI创建一个File实例。
File(URI uri) 

常用API:

返回此抽象路径表示的文件或目录的名称字符串
public String getName()

返回此抽象路径的父路径字符串,如果此路径没有指定父目录,则返回 null
public String getParent()、

返回此抽象路径的父路径的File对象,如果此路径没有指定父目录,则返回 null。
public File getParentFile()

将此抽象路径转换为一个路径字符串
public String getPath()

判断此抽象路径表示的文件或目录是否存在
public boolean exists()

判断此抽象路径表示的文件是否是一个目录
public boolean isDirectory()

判断此抽象路径表示的文件是否是一个标准文件
public boolean isFile()

当且仅当此抽象路径指定的名称的文件不存在时,原子地创建由此抽象路径指定的一个新的空文件
public boolean createNewFile() throws IOException
1.当抽象路径指定的文件不存在时,创建成功,返回true
2.当抽象路径指定的文件存在时,创建失败,返回false
3.当抽象路径指定的文件的父目录不存在时,抛出异常
例:
String pathName = ""A:/Test/test.txt"";
File file = new File(pathName);
//此时映射的文件不存在,进入创建文件
if (!file.exists()){
    try {
    	//此时父路径不存在会抛出异常
        file.createNewFile();
    } catch (IOException e) {
        e.printStackTrace();
    }
解释:A盘下不存在Test文件夹,抛出异常java.io.IOException: 系统找不到指定的路径。


返回一个File数组,这些返回的File表示当前抽象路径所表示目录中的文件
public File[] listFiles()

创建此抽象路径指定的目录
public boolean mkdir()

创建此抽象路径指定的目录,包括创建必需但不存在的父目录
public boolean mkdirs()

递归打印目录树:

package top.lucas9.io;

import java.io.File;

/**
 * @author lucas9
 */
public class PrintFileTree {
    public static void main(String[] args) {
        String pathName = "A:\\JAVA\\Java_Projects";
        File file = new File(pathName);
        if (null != file && file.exists()) {
            PrintFile(file, 0);
        }
    }

    public static void PrintFile(File file,int deep){
        for (int i = 0; i < deep; i++) {
            System.out.print("——");
        }
        System.out.println(file.getName());
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File temp : files) {
                PrintFile(temp, deep + 1);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值