63.【Java I/O 操作】(四)

简介: 63.【Java I/O 操作】

26.文件夹的操作:

基本思路:
1.遍历文件夹
2.创建文件夹
3.删除文件夹
4.判断文件夹的操作
5.获取文件夹信息
import java.io.File;
import java.util.Date;
public class Demo16 {
    public static void main(String[] args) throws Exception {
        directoryOpe();
    }
    public static void directoryOpe() throws Exception{
        //1.创建文件夹
        File dir=new File("e:\\aaa\\bbb\\ccc");  //d盘下面一个aaa目录,在下面bbb目录
        System.out.println(dir);
        if(!dir.exists()){
            System.out.println("创建多级目录成功:"+dir.mkdirs());
        }
        //2.删除文件
       /*    //2.1直接删除
        System.out.println("删除的结果是:"+dir.delete());  //删除底层目录并且文件内容为空的时候
            //2.2使用jvm进行删除
        dir.deleteOnExit();  //删除底层目录并且文件内容为空的时候
        Thread.sleep(5000);
        */
        //3.获取文件夹的信息
        System.out.println("获取绝对路径:"+dir.getAbsolutePath());
        System.out.println("获取路径"+dir.getPath());
        System.out.println("获取文件的名字"+dir.getName());
        System.out.println("获取父目录:"+dir.getParent());
        System.out.println("获取创建时间"+new Date(dir.lastModified()).toLocaleString());
        //4.判断
        System.out.println("是否是文件夹"+dir.isDirectory());
        System.out.println("是否被隐藏"+dir.isHidden());
        //5.遍历文件夹
        File file=new File("C:\\Users\\22612\\Pictures\\Screenshots");
        //通过集合的方式获取信息
        String []files=file.list();
        System.out.println("------------------------------------");
        for (String string : files){   //for增强遍历
            System.out.println(string);
        }
    }
}

(十一)、FileFilter(文件过滤器)接口

27.文件过滤器

public interface FileFilter
2.
当调用File类中的listFiles()方法时,支持传入FileFilter接口接口实现类,
对获取文件进行过滤,只有满足条件的文件的才可出现在listFiles()的返回值中。
基本思路:
1.文件过滤器:可以获得指定的文件
2.endsWith(".jpg") 获得后缀为.jpg的文件。
3.适配器
import java.io.File;
import java.io.FileFilter;
import java.util.Date;
public class Demo16 {
    public static void main(String[] args) throws Exception {
        directoryOpe();
    }
    //3.文件夹的操作:
    public static void directoryOpe() throws Exception{
        //5.遍历文件夹
        File file=new File("C:\\Users\\22612\\Pictures\\Screenshots");
        //通过集合的方式获取信息
        String []files=file.list();
        System.out.println("------------------------------------");
        for (String string : files){   //for增强遍历
            System.out.println(string);
        }
        System.out.println("------------------FileFilter------------------");
        File[] files2=file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if(pathname.getName().endsWith(".jpg")){
                    return true;
                }
                return false;
            }
        });
        for (File file_1:files2) {
            System.out.println(file_1.getName());
        }
    }
}

(十二)、递归遍历/递归删除

28.递归遍历(文件)

基本思路:
1.利用递归的操作,依次进入文件夹。当遇到文件夹的时候,我们就对其进行遍历
和输出.
import java.io.File;
public class Demo17 {
    public static void main(String[] args) throws Exception {
            list_dir(new File("E:\\aaa"));
    }
    public static void list_dir(File dir){
        File[] files = dir.listFiles();
        System.out.println("文件夹的信息"+dir.getAbsolutePath());
        if(files!=null&&files.length>0){  //假如说文件/文件夹不为空,且长度大于0
            for (File file_one: files
                 ) {
                if(file_one.isDirectory()){  //如果是文件夹就进行递归
                    list_dir(file_one);
                }else {
                    //获取文件的绝对路径
                    System.out.println("文件的信息是:"+file_one.getAbsolutePath());
                }
            }
        }
    }
}

29.递归删除()

基本思路:
1.因为如果文件夹里面有文本,那么我们只有先删除文本,才能再次删除文件夹
import java.io.File;
public class Demo17 {
    public static void main(String[] args) throws Exception {
            delete_dir(new File("E:\\aaa"));
    }
    public static void delete_dir(File dir){
        File[] files_one = dir.listFiles();
        System.out.println("进入文件夹 "+dir.getAbsolutePath());
        if(files_one!=null&&files_one.length>0){
            for (File files_two:files_one
                 ) {
                if(files_two.isDirectory()){ //假如是文件夹
                    delete_dir(files_two);
                }else{
                    System.out.println(files_two.getAbsolutePath()+"文件已被删除 "+files_two.delete());
                }
            }
        }
        System.out.println("删除文件夹"+dir.getAbsolutePath()+dir.delete());
    }
}

(十三)、Properties

30.properties

properties:属性集合
特点:
1.存储属性名和属性值
2.属性名和属性值都是字符串类型
3.没有泛型
4.和流有关
基本知识:
1.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.Set;
public class Demo18 {
    public static void main(String[] args) throws Exception{
        //1.创建集合
        Properties properties=new Properties();
        //2.添加数据
        properties.setProperty("user_name","占山");
        properties.setProperty("age","20");
        System.out.println(properties.toString());
        //3.遍历:
          //3.1  keySet
            //3.2 entrySet
            //3.3 stringProperties.stringProprertyNames()
        Set<String> strings = properties.stringPropertyNames();   //设置一个集合
        for (String string_test:strings
             ) {
            System.out.println(string_test+"===="+properties.getProperty(string_test));  //通过key即可
        }
       //4.和流有关的方法
        PrintWriter printWriter=new PrintWriter("e:\\0303.txt");  //打印到e盘了
        properties.list(printWriter);
        printWriter.close();
        //5.=========保存store========
        //1.创建一个文件输出流
        FileOutputStream fileOutputStream=new FileOutputStream("e:\\store.properties");
        properties.store(fileOutputStream,"注释");
        fileOutputStream.close();
        //6.========load加载========
        Properties properties1=new Properties();
        FileInputStream fileInputStream=new FileInputStream("e:\\store.properties");
        properties1.load(fileInputStream);
        fileInputStream.close();
        System.out.println(properties1.toString());
    }
}

相关文章
|
18天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
4月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
|
5月前
|
存储 Java
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
java用modbus4j的RTU去操作那些寄存器(线圈,保持,输入,离散输入寄存器)
128 0
|
4月前
|
存储 缓存 Oracle
可能是最漂亮的Java I/O流详解
大家有什么思路吗?评论区一起讨论讨论。我需要使用 Java 逐行读取大约 5-6 GB 的大型文本文件。我怎样才能快速完成此操作?最高赞的回答是叫Peter Lawrey的老哥回答的。大家好,我是南哥。一个Java学习与进阶的领路人,今天指南的是Java I/O流,跟着南哥我们一起在Java之路上成长。本文收录在我开源的《Java学习进阶指南》中,涵盖了想要学习Java、成为更好的Java选手都在偷偷看的核心知识、面试重点。
123 1
可能是最漂亮的Java I/O流详解
|
4月前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
51 4
|
4月前
|
Java Linux
Java演进问题之1:1线程模型对于I/O密集型任务如何解决
Java演进问题之1:1线程模型对于I/O密集型任务如何解决
|
4月前
|
分布式计算 DataWorks Java
DataWorks操作报错合集之使用ODPS Tunnel Upload功能时,遇到报错:Java 堆内存不足,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
SQL 缓存 Java
使用MyBatis优化Java持久层操作
使用MyBatis优化Java持久层操作
|
4月前
|
Java API 开发者
Java中的文件I/O操作详解
Java中的文件I/O操作详解
|
4月前
|
Java BI 数据处理
如何在Java中实现Excel操作
如何在Java中实现Excel操作
下一篇
无影云桌面