java IO总结之文件

在设计程序的时候,我们经常有这样的需求:把我们的变量打印到控制台,或者把日志记录到文件中,又或是与服务器进行连接…这些需求都可以归结为程序与接收端通信——IO。为了解决这些难题,Java的设计者设计了功能强大的IO类库。Java的标准IO是阻塞IO,也就是我们所说的BIO(Blocking IO),在JDK1.4中,官方又推出效率更高、功能更强大的非阻塞IO——NIO(Non-blocking IO)。本篇文章介绍的是IO中最基础的File类

一、File类简介

Java设计者的用File来表示操作系统中各种各样的文件和目录,使用File可以完成一些关于文件和目录的基本操作:创建、删除文件,创建、删除目录,列出目录下的所有文件

二、创建文件
String fileName = "E:" + File.separator+"hello.txt";
File file = new File(fileName);
if (!file.exists()) {
    try {
        file.createNewFile();
    } catch (IOException e) {
      e.printStackTrace();
    }
}

上面文件路径中用到了一个常量File.separator,表示文件分隔符。不同操作系统的文件分隔符不同,在程序中最好不要写死。File.separator可以获取系统的文件分隔符

注意:文件目录必须是存在的,否则程序会出现异常。比如:

String fileName = "E:" + File.separator + "A" + File.separator + "hello.txt";

我的文件系统中没有A文件夹,运行程序,就会报下面的异常

java.io.IOException: 系统找不到指定的路径。

解决办法是先创建相应的文件夹,然后再创建文件,创建文件夹后面会讲到

三、删除文件
String fileName = "E:" + File.separator + "hello.txt";
File file = new File(fileName);
if (file.exists()) {
    file.delete();
}

如果文件不存在,调用delete方法看不到任何效果

四、创建文件夹
String folderName = "E:" + File.separator + "java";
File folder = new File(folderName);
folder.mkdirs();
五、删除文件夹
String folderName = "E:" + File.separator + "java";
File folder = new File(folderName);
if (folder.isDirectory()) {
    folder.delete();
}
六、判断一个指定的路径是否为目录
String folderName = "E:" + File.separator + "java";
File folder = new File(folderName);
System.out.println("is Directory :"+folder.isDirectory());
七、列出指定文件夹下的所有文件和文件夹(包括隐藏文件)
String folderName = "E:" + File.separator;
File folder = new File(folderName);
if (folder.isDirectory()) {
    String[] fileList = folder.list();
    for (String file : fileList)
        System.out.println(file);
}

list列出来只是文件名,如果需要文件完整路径,可以这样写

String folderName = "E:" + File.separator;
File folder = new File(folderName);
if (folder.isDirectory()) {
    File[] fileList = folder.listFiles();
    for (File file : fileList)
        System.out.println(file);
}
八、搜索指定目录的全部文件
public void listAllFile(File file) {
    if (file == null)
        return;

    if (file.isDirectory()) {
        File[] fileList = file.listFiles();
            if (fileList != null) {
                for (File file1 : fileList) {
                    // 递归调用
                    listAllFile(file1);
                }
        }
    } else {
        System.out.println(file);
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值