java基础之IO流及递归理解

一、IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等)

二、File类(就是操作文件和文件夹的)

1、FIleFile类构造方法

注意:通过构造方法创建的file对象是在内存里面,而不是在磁盘里面。

File(String pathname)  根据指定的路径名创建file对象

File(String parent, String child)  根据 parent 路径名字和 child 路径名创建一个File对象

File(File parent, String child)  根据 parent 文件对象和 child 路径名 创建一个file对象。

相对路径 :相对于某个项目的根路径;

绝对路径 : 完整的路径。

1、 创建文件和文件夹相关的方法

boolean createNewFile();   如果创建成功,则返回true。如果文件已存在,它不会再次进行创建,直接返回false

注意: 如果你的文件路径不存在,则直接抛出异常

boolean   mkdir();   创建文件夹,如果创建成功,直接返回true。如果文件夹已存在,它不会再次进行创建,直接返回false

注意:如果你的文件路径不存在,直接返回false

mkdir  1次只能创建1个文件夹,因此我们统一使用mkdirs来创建多级文件夹

createNewFile和mkdir的区别:

1.createNewFile只能创建文件,mkdir只能创建文件夹

2.使用createNewFile的时候,如果路径不存在,直接抛出异常,   而mkdir是直接返回false

3.createNewFile和mkdir如果路径都存在,并且文件或者文件夹已经有了,它不会再次进行创建,直接返回false。

3、删除方法

删除相关的方法:

boolean delete()  删除文件或者文件夹

删除文件:

文件存在,删除成功,返回true

文件不存在,返回false

删除文件夹(必须是空的):

文件夹存在,删除成功,返回true

文件夹不存在,直接返回false

删除文件夹特点: 如果文件夹嵌套多层,它只能删除最里层(只能删除空文件夹),不能删除嵌套层

4、正斜杠与反斜杠

获取分隔符相关的字段(智能选择/或者\):

static String separator  优点:兼容性非常好;缺点: 维护性可读性太差了,用起来非常麻烦

在windows操作系统里面 正斜杠和反斜杠它们都支持 ---》windows操作系统默认就是   反斜杠

在linux操作系统只支持/它不支持反斜杠

综上,我们统一使用正斜杠  /

1、File类常用方法

boolean createNewFile()   创建文件

String getPath()  获取路径名(构造方法传递什么值,你这个方法就获取到对应的值)

String getAbsolutePath() 获取文件或者文件夹的绝对路径,返回字符串表示形式

File getAbsoluteFile()  获取文件或者文件夹的绝对路径,返回文件对象

boolean delete()  删除文件或者文件夹

boolean exists()  判断文件或者文件夹是否存在

String getName()  获取文件名或者文件夹名

String getParent() 获取父文件夹对应的路径     以字符串的形式展示

File getParentFile() 获取父文件夹对应的路径     以文件对象的形式展示

boolean isDirectory()  判断file对象是否是一个文件夹

boolean isFile()   判断file对象是否是一个文件

boolean mkdirs()   创建文件夹(可以创建多级文件夹)

2、File类常用转为数组的方法

只能获取下一级:

String[] list()  获取指定文件夹下面的所有文件和文件夹名字(只针对一级)  以字符串的形式展示

File[] listFiles()   获取指定文件夹下面的文件或者文件夹对象(只针对一级)  以File对象的形式展示

static File[] listRoots()  获取当前系统系统的根盘符

3、File类常用转为数组的方法并且带有过滤器

过滤的相关方法(也只能获取下一级的文件或者文件夹)

String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[] listFiles(FileFilter filter)   返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

FilenameFilter 、FileFilter 都是接口

三、递归(指的就是不断重复的调用方法自身,注意:递归必须要留出口)

示例代码:

public class 递归Test2 {
    public static void main(String[] args) {
        递归Test2 Test = new 递归Test2();
        Test.delete(new File("D:/a.java"), "java");

    }
    /**
     * 定义一个方法,删除传入的一个文件夹以及下面的所有以Java为后缀的文件或者文件
     * @param file
     * @param suffix
     */
    public void delete(File file,String suffix){
        //如果file不为空并且是一个文件,就将这个文件转为File类型的数组
        if(file != null && file.isDirectory()){
            File[] list = file.listFiles();
            //如果这个数组不等于null,并且长度不为零,就进行循环
            if(list != null && list.length != 0){
                for (File file2 : list) {
                    //如果这个文件不是空的,比你高且是以Java结尾的,那么就删除这个文件
                    if(file2 != null && file2.getName().endsWith(suffix)){
                        file2.delete();
                    }else{
                        //否则这就是一个文件夹,那么久继续进行最初的if,也就是掉用自己本身这个方法(迭代)
                        delete(file2,suffix);
                    }
                }
            }
        }else if(file != null && file.isFile()){
            if(file.getName().endsWith(suffix)){
                file.delete();
            }
        }

    }

}

 

原文地址:https://www.cnblogs.com/limengkun/p/10721038.html

时间: 2024-10-10 23:04:26

java基础之IO流及递归理解的相关文章

java基础之IO流(一)

java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典型数据源与目标媒介包括磁盘.网络.内存等等. IO流的分类: 按流向分为:输入流和输出流(本地内存为参考) 按处理数据单位:字符流和字节流 按照是否与特定的地方相连(磁盘.网络.内存):节点流和处理流 节点流:可以从或向一个特定的地方(节点)读写数据. 处理流:是对一个已存在的流的连接和封装,通过所

java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律 掌握好IO流的规律,再开发中会很好用 下面来总结一下: 1,明确源和目的 源:输入流 InputStream 和Reader 目的:输出流 OutputStream 和Writer 2,操作的数据是否是纯文本. 是:使用字符流 不是:使用字节流 3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分 源设备: 内存,硬盘,键盘 目的设备: 内存,硬盘,控制台 这里的源就是你想进行的操作,比如说你想从c盘复制一个文

Java基础之IO流

1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不同:分为字节流和字符流.字符流是为了方便中文的操作而来的. (5)按照流的流向不同分为:输入流,输出流 2.IO流常用基类: (1)字节流 输出字节流:OutputStream:字节写入流抽象类 |--->FileOutputStream: 字节写入流 |--->BufferedOutputStream:

Java基础知识IO流(其他类)

IO包中的其他类 打印流 PrintWriter与PrintStream 序列流 SequenceInputStream 切割文件 操作对象 ObjectInputStream与ObjectOutputStream 管道流 PipedInputStream和PipedOutputStream RandomAccessFile类 (随机访问文件) 操作基本数据类型 DataInputStream和DataOutputStream类 操作数组的流 ByteArrayInputStream/ByteA

Java基础:IO流之字节流和字符流

1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL. 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流.用户可以从输入流中读取信息,但不能写它.相反,对输出流,只能往输入流写,而不能读它. 实际上,流的源端和目的端可简单地看成是字节的生产者和消费

java基础8(io流3)

1.LineNumberReader: public int getLineNumber():获取行号 public void setLineNumber(int lineNumber):设置起始行号 String readLine():读取一行 2.操作基本数据类型的流 DataInputStream:读数据 DataOutputStream:写数据 作用:可以操作基本类型的流对象,其读写顺序必须一致,否则数据有问题. public static void main(String[] args

Java基础之IO流学习总结

Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流的区

JAVA基础学习---IO流总结

Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流

java基础06 IO流

IO用于在设备间进行数据传输的操作. Java IO流类图结构:   IO流分类 字节流: InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedOutputStream 字符流: Reader FileReader BufferedReader Writer FileWriter BufferedWriter 一.FileInputStream/FileOutputStream