Java学习之随堂笔记系列——day17

1、File类和递归思想
    概念:File表示文件或者文件夹在硬盘中的路径。不能保证表示的文件或者文件夹一定存在。
    构造方法:
        File(String pathname):通过将给定的路径名字符串创建File对象。
        File(String parent, String child):从父路径名字符串和子路径名字符串创建新的 File对象,一般parent表示父目录,child表示子文件或者目录。
        File(File parent, String child):从父抽象路径名和子路径名字符串创建新的 File实例。
    成员方法:
        创建的方法
            public boolean createNewFile():创建一个新文件,返回值为是否创建成功。如果文件已经存在,则不创建,返回值false。
            public boolean mkdir():创建单级目录,返回值为是否创建成功。如果目录已经存在,则不创建,返回值false。
            public boolean mkdirs():创建多级目录,返回值为是否创建成功。如果目录已经存在,则不创建,返回值false。
                    提示:mkdirs()也可以创建单级目录。
        判断的方法
            public boolean isDirectory():测试此抽象路径名表示的File是否为目录
            public boolean isFile():测试此抽象路径名表示的File是否为文件
            public boolean exists():测试此抽象路径名表示的File是否存在
        获取的方法
            public String getAbsolutePath():返回此抽象路径名的绝对路径名字符串
            public String getName():返回由此抽象路径名表示的文件或目录的名称
            public File[] listFiles():返回此抽象路径名表示的目录中的文件和目录的File对象数组
        删除的方法
            public boolean delete():删除由此抽象路径名表示的文件或目录
                注意:
                    1 如果是删除目录,那么只能删除空目录,如果目录中有内容,应该要先删除其中的内容。
                    2 调用delete()方法删除的内容不进回收站,是彻底的删除。

    补充:路径的写法:
       绝对路径:以盘符开头的路径就是绝对路径 例如:C:/aaa/bbb/abc.txt  d:/aaa/bbb/abc.txt
       相对路径(常用):路径不带盘符。相对的是project,module在project中。也就是说默认从project中根据相对路径查找。
               相对路径是以./或者../开头,但是./可以省略不写。./表示当前目录, ../表示上一级目录
               例如:
                   ./day08/abc.txt 也可以简写成 day08/abc.txt
                   ../abc.txt 表示project的上一级目录下有个abc.txt
    递归思想:
        概念:方法自己调自己。
        使用场景:如果一段操作需要重复执行,并且有一定的规律。
        思想:将一个复杂的问题拆成一个个简单的问题,每个简单的问题都解决了,那么大的问题也就解决。
        注意事项:
            1、递归一定要有出口
            2、递归的次数不能过多。
    上午内容总结
        File类:
            File表示文件或者目录在硬盘中的路径。
            构造方法:
            成员方法:
        递归:方法自己调自己。
2、字节输出流
    IO流:input和output流,也叫做输入输出流。
    IO流分类:
        输入流:读数据,将硬盘中的文件内容加载到内存中。
            字节输入流:InputStream抽象类
            字符输入流:Reader抽象类
        输出流:写数据,将内存中的数据写到硬盘中。
            字节输出流:OutputStream抽象类
            字符输出流:Writer抽象类
        如果是读写文本文件(自带的记事本能打开的文件),使用字符流。如果是读写非文本文件,使用字节流。

    字节输出流写数据的基本思路:
        1、创建字节输出流对象
        2、调用write方法写数据
        3、调用close方法释放资源
    构造方法:
        FileOutputStream​(String name):根据字符串路径创建字节输出流对象
            1、不管文件是否存在都创建一个新文件2、创建流对象3、流对象指向新文件
        FileOutputStream​(String name, boolean append):根据字符串路径创建字节输出流对象,参数2如果是true表示向文件中追加内容,不会创建新文件。
        创建文件输出流以指定的名称写入文件。
    成员方法:
        void write​(byte[] b):将整个字节数组写到文件中
        void write​(byte[] b, int off, int len):将字节数组从索引off开始往后的len个字节写到文件中,只写字节数组的一部分。

    写数据的两个小问题
        问题1:写数据换行,向文件中写一个换行符
             mac:\r
             linux: \n
             windows: \r\n
             现在都不区分系统了,随便使用哪个都可以

        问题2:文件数据追加
            FileOutputStream​(String name, boolean append)构造方法的第二个参数传递true,表示文件追加
3、字节输入流
    功能:将硬盘中文件的内容读取到内存中
    字节输入流读数据的基本思路:
        1、创建流对象
        2、调用read()方法读数据
            /*
                在开发中byte数组的长度一般为1024或者1024的整数倍。1024个字节=1kb;
             */
            byte[] bytes=new byte[1024];//这个字节数组可以看成是一个容器,每次往这个容器中存数据。
            int len=0;//保存每次读写的个数,如果为-1,表示读完了
            while ((len=fis.read(bytes))!=-1){
                System.out.print(new String(bytes,0,len));
            }
        3、调用close​()释放资源
    构造方法:
        FileInputStream​(String name):根据字符串路径创建字节输入流对象
        FileInputStream​(File file):根据file路径创建字节输入流对象
    成员方法:
        int    read​()    :一次读一个字节
        int    read​(byte[] b)    :一次读一个字节数组(常用),方法的返回值为实际读到的字节个数,读到文件末尾返回-1;
        int    read​(byte[] b, int off, int len):一次读一个字节数组的一部分,方法的返回值为实际读到的字节个数,读到文件末尾返回-1;

    IO总结:
        输入流:FileInputStream
        输出流:FileOutputStream

        需要掌握文件复制-一次读写一个字节数组的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值