File类和字节流

一、File类:


    1).java.io.File(类):它封装了一个文件/目录的"路径",它里面包含了一些方法,可以对这个路径的文件/目录做一些操作:
                        例如:创建文件/目录、删除文件/目录、获取文件/目录的一些属性信息。
                        但是:它不能读写文件内容!!!!!
                        读写文件内容用:IO流
    2).File类的构造方法:
        1).File(String pathname) 通过将给定的路径名的字符串转换成一个抽象路径名创建一个新的 File实例。 【常用】
        2).File(String parent, String child) 创建从父路径名的字符串和一个孩子的一个新的 File实例文件。 
        3).File(File parent, String child) 创建从一个家长的抽象路径名和一个孩子的路径字符串的新 File实例。  
        注意:构造时,文件可以不存在,后期可以通过此File对象的一些方法来判断这个路径表示的文件/目录是否存在。
        
    3).绝对路径:带盘符的路径
       相对路径:不带盘符的路径——从项目根目录下开始找。
       
    4).常用方法:
        a).获取相关的方法
            1).public String getAbsolutePath() :返回此File的绝对路径名字符串。
            2).public String getPath() :返回构造路径。
            3).public String getName()  :返回由此File表示的文件或目录的名称。  
            4).public long length()  :返回由此File表示的文件的大小。 不能获取目录的大小。单位:字节
            
        b).判断相关的方法
            5).public boolean exists() :此File表示的文件或目录是否实际存在。
            6).public boolean isDirectory() :此File表示的是否为目录。
            7).public boolean isFile() :此File表示的是否为文件。

        c).创建删除相关的方法
            8).public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。 
            9).public boolean delete() :删除由此File表示的文件或空目录。  
            10).public boolean mkdir() :创建由此File表示的目录。创建单级目录
            11).public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。创建多级目录
            
        d).目录遍历的相关方法
            12).public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录的名字。
            13).public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
    5).练习:找出一个单级目录下的所有.java文件。
        


二、字节流:


    1).IO流的概念:
        I:Input(输入)——将外部的数据(磁盘、网络)读取到内存。也称作:读取
        O:Output(输出)——将内存的数据写入到外部(磁盘、网络)。也称作:写入
        流:类似于水流,线性的,有方向的。
    2).IO流作用:读写文件的数据的。
    3).IO流是统称,它包含了很多的"IO流类",这些类形成了一些分类,和体系结构:
        A).字节流:以字节的形式读、写文件。可以读、写任何文件(纯文本文件、视频、音频文件、图像...),是Java中最底层,最基本的流。
            1).输出流:OutputStream(抽象类)
                            1).write(int b):输出一个字节;
                            2).write(byte[] bytes):输出多个字节(一个字节数组)。
                            3).write(byte[] bytes,int offset,int len):输出一个字节数组的一部分。
                            输出一个换行:
                            write("\r\n".getBytes());
                            4).close():关闭流
                            
                        |--FileOutputStream(子类)
                            1).构造方法:
                                1).FileOutputStream(String name) 创建一个文件输出流,用指定的名称写入文件。【覆盖写】  
                                2).FileOutputStream(String name, boolean append) 创建一个文件输出流,用指定的名称写入文件。
                                3).FileOutputStream(File file) 创建一个文件输出流写入指定的 File对象表示的文件。 【覆盖写】
                                4).FileOutputStream(File file, boolean append) 创建一个文件输出流写入指定的 File对象表示的文件。  
                        
                        注意:
                        1).Java中所有的输出流,构造时,文件都可以不存在,会自动创建一个。
                        2).所有的IO流,都必须构造在一个"文件上",不能构造在一个已有的目录上。
                        

            2).输入流:InputStream(抽象类)
                            1).public int read():读取一个字节,返回的是:字节的编码【效率低】
                            2).public int read(byte[] bytes):读取多个字节,存储到参数数组中。【效率高】
                            
                        |--FileInputStream(子类)
                            1).构造方法:
                                1).FileInputStream(File file) 打开一个连接到一个实际的文件创建一个 FileInputStream,文件在文件系统的 File对象 file命名。  
                                2).FileInputStream(String name) 打开一个连接到一个实际的文件创建一个 FileInputStream,文件由文件系统中的路径名 name命名。  
                        注意:
                        1).Java中所有的输入流,构造时,文件必须存在,否则抛出异常。

                        
            3).案例:文件复制:
                    1).构造一个到源文件的:输入流;
                    2).构造一个到目标文件的:输出流:
                        

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成神之路.java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值