IO流的常用方法

1. File
文件和目录路径名的抽象表示。

 File(Stringpathname)            通过将给定的路径名字符串转换为抽象路径名来创建新的File实例。
 File(Stringparent,Stringchild)  从父路径名字符串和子路径名字符串创建新的File实例。
 File(Fileparent,Stringchild)    从父抽象路径名和子路径名字符串创建新的File实例。
  • File常用方法

    boolean setReadOnly()            标记此抽象路径名指定的文件或目录,以便仅允许读取操作。
    boolean canWrite()               测试应用程序是否可以修改此抽象路径名表示的文件。
    booleanc reateNewFile()          当且仅当具有此名称的文件尚不存在时,以原子方式创建由此出抽象路径名命名的新空文件。
                               注意:不能创建文件夹只能创建文件。
    boolean  delete()                删除此抽象路径名表示文件或目录。注意:如果包含子内容的文件夹不能直接删除。
    boolean exists()                 测试此抽象路径名表示的文件或目录是否存在。
    File getAbsoluteFile()           返回此抽象路径名的绝对形式。
    String getAbsolutePath()         返回此抽象路径名的绝对路径名字符串。
    longger FreeSpace()              通过此抽象路径名返回分区named中未分配的字节数。
    long getTotalSpace()             通过此抽象路径名返回分区named的大小。
    String getName()                 返回此抽象路径表示的文件或目录的名称。
    String getParent()               返回此抽象路径名父项的路径名字符串,如果此路径名未指定父目录,则返回null。
    String getParentFile()           返回此抽象路径名父项的抽象路径名,如果此路径名未指定父目录,则返回null。
    boolean isAbsolute()             测试此抽象路径名是否为绝对路径。
    boolean isDirectory()            测试此抽象路径名表示的文件是否为目录。
    boolean isFile()                 测试此抽象路径名表示的文件是否为普通文件。
    boolean isHidden()               测试此抽象路径名指定的文件是否为隐藏文件。
    long lastModified()              返回上次修改此抽象路径名表示的文件的时间。
    long length()                    返回此抽象路径名表示的文件的长度。
    String[] list()                  返回一个字符串数组,用于命名此抽象路径名表示的目录中文件和目录。
    File[] listFiles()               返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。
    boolean mkdir()                  创建此抽象名指定的目录。
    boolean mkdirs()                 创建此抽象路径名指定的目录,包括任何必需但不存在的父目录。
    booleanr enameTo(Filedest)       重命名此抽象路径名表示的文件。
    

2. IO

  • IO流:
    数据的读入写出,文件的上传下载。

     流:  一连串流动的数据,以先入先出的方式进行传输-->流就是管道
     数据源---->io---->目的地
     数据源 : 数据的来源
     目的地 : 数据流向的位置
    
  • 流的分类:

     操作单元分:
         字节流 : 万能流。
         字符流 : 纯文本内容。
     流向分: 以程序为中心。
         输入流。
         输出流。
     功能分:
         节点流 : 真实能做读入写出的。
         功能流 : 增强节点流的功能,提高节点流的性能。
     流之间的分类是相辅相成的。
    
  • InputStream:
    字节输入流中最上层父类。

    文件流 : FileInputStream 文件字节输入流->节点流  字节流  输入流
         操作文件,数据源为文件,使用文件字节输入流
    字节数组流 : ByteArrayInputStream 字节数组输入流 ->节点流  字节流  输入流
         操作字节数组,数据源是字节输入,使用字节数组输入流
    
  • OutputStream:
    字节流输出流。

     FileOutputStream 文件字节输出流 -> 节点流
         目的地为文件。
     ByteArrayOutputStream 字节数组输出流 -> 节点流
         目的地为字节数组。
     注意: 在输出流写出的时候,如果目的地文件不存在,系统会自动创建目的地文件,如果目的地文件所在路径不存在,抛出异常java.io.FileNotFoundException:(系统找不到指定的路径。)
    
  • 字节流实现文件拷贝:

       数据源-->输入流-->程序-->输出流-->目的地
    步骤:
      1.构建流(输入流  输出流)。
      2.读入写出。
      3.刷出。
      4.关闭 (后打开的先关闭)。
    
  • 字符流 (纯文本数据):

     Reader  字符输入流
         FileReader 文件字符输入流  ->节点流
     Writer  字符输出流
         FileWriter 文件字符输出流  ->节点流
     注意:通过字符流实现文件拷贝。
    void write(char[] cbuf)       写一个字符数组。
    void write(char[] cbuf, int off, int len) 
                                  写一个字符数组的一部分。
    void write(int c)             写一个字符。
    void write(String str)        写一个字符串。
    void write(String str, int off, int len) 
                                  写一个字符串的一部分。
    
  • 功能流 :

     使用:包裹节点流使用。
     缓冲流 Buffered : 加快节点流的读写效率。
       (1)字节缓冲流 :
             字节输入缓冲流   BufferedInputStream。
             字节输出缓冲流   BufferedOutputStream。
                 无新增方法,可以发生多态
       (2)字符缓冲流。
    
  • 字符流缓冲流:

     字符输入缓冲流   BufferedReader
         新增功能: String readLine() 读一行文字。
     字符输出缓冲流   BufferedWriter
         新增功能: void newLine() 写一个行分隔符。
    注意: 存在新增功能,不能发生多态。
    
  • Data流 | 基本数据类型流 :
    字节流的功能流。

     读写数据+保留数据类型->基本数据类型|字符串
         DataInputStream     Data输入流
             新增功能 : readXxx()
         DataOuutputStream   Data输出流
             新增功能 : writeXxx()
    
    注意: 
       1.读入与写出的顺序保持一致。
       2.读入数据的时候必须从源文件中读入,否则抛出异常 java.io.EOFException。
    
  • Object流|对象流|引用数据类型流:
    字节流的功能流。

     ObjectInputStream   反序列化输入流
         新增方法 :Object readObject() :从ObjectInputStream中读取一个对象。 
     ObjectOutputStream  序列化输出流
         新增方法 :void writeObject(Object obj) :将指定的对象写入ObjectOutputStream。
     序列化: 将对象数据转为可存储或者可传输的状态的过程。
     注意:
        1.不是所有类型的数据都能序列化 java.io.Serializable。
        2.如果写出的对象类型没有实现序列化接口,会遇到运行时异常java.io.NotSerializableException。
        3.序列化与反序列化顺序保持一致。
        4.不是所有的属性都需要序列化 transient。
        5.static的成员不会被序列化。
        6.如果父类实现类序列化接口,子类所有内容都可以进行序列化;子类实现了序列化接口,只能序列化子类独有的内容。
     序列号: 当实现了序列化的类型默认存在一个序列号;
            当类中的成员发生改变,序列号默认会重新生成。
     作用: 使用序列号可以实现检查前后版本不一致问题。
     解决不同版本的兼容问题: 手动设置序列号。
     通过快捷键生成序列号:
         1.类型必须实现了序列化接口。
         2.Setting中进行配置。
         3.双击类名alt+enter,自动生成序列号。
    

3. CommonsIO

  • CommonsIO:
    apache的一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件,url源代码等。同时也是一个第三方的开源组件

    使用第三方组件的步骤:
       1.对应官网中下载源码 jar。
       2.在项目下新建一个文件夹目录lib,lib下存放以后项目所依赖的所有jar包。
       3.选中jar包,右键add as lib...
       4.在项目下对应类中进行使用。
    
  • IO工具类IOUtils:

    IOUtils.copy(InputStream input, OutputStream output)
                此方法有多个重载方法,满足不同的输入输出流。
    
  • IO工具类FilenameUtils:

    FilenameUtils.getBaseName(String filename)
                去除目录和后缀后的文件名。
    FilenameUtils.getExtension(String filename)  
                获取文件的后缀。
    isExtension(String fileName, String text) 
                判断fileName是否是text后缀名。
    
  • IO工具类FileUtils:

    FileUtils.copyFile(File srcFile, File destFile)
                复制文件。
    FileUtils.copyFileToDirectory(File srcFile, File destDir)
                复制文件到一个指定的目录;目标路径不存在,也可以帮助创建。
    FileUtils.writeStringToFile(File file, String data, String encoding, boolean append)
                指定知否追加。
    FileUtils.deleteDirectory(File directory)
                删除文件夹,包括文件夹和文件夹里面所有的文件。
    FileUtils.copyDirectory(File srcDir, File destDir)
                复制文件夹(文件夹里面的文件内容也会复制)。
    FileUtils.copyDirectoryToDirectory(File srcDir, File destDir)
                以子目录的形式将文件夹复制到到另一个文件夹下。
    FileUtils.copyDirectory(File srcDir, File destDir, FileFilter filter)
                复制文件夹,带有文件过滤功能。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值