zoukankan      html  css  js  c++  java
  • 二十、Java基础--------IO流之其他对象

             在上面两篇文章中介绍了IO体系并详细介绍了字节流以及字符流,本文主要是讲述操作文件的File、转化流、标准输入与输出、Properties、打印流以及序列流。

    File

        File英文为"文件"的意识,正如其意识所表达的一样,File代表的是对磁盘文件对象,File中封装了对文件操作的一些方法,例如创建.删除.重命名文件等操作。File类是对象主要用来获取未文件本身的一些信息,如文件所在的目录、文件的长度、文件的读写权限等。File对象可以作为参数传递给流的构造函数。

            构造方法:

                    |--File(File parent, String child)

                    根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。

                    |--File(String pathname)

                    通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

                    |--File(String parent, String child)

                    根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

                    |--File(URI uri)

                    通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

            常见方法

            1.创建

                    boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。

                    boolean mkdir():创建文件夹。

                    boolean mkdirs():创建多级文件夹。

            注:File类创建文件的方法createNewFile()与输出流的方法不同点:

            File类通过createNewFile方法来创建文件的话,如果文件存在则不创建

            输出流是对象一建立就创建文件,如果文件存在就会覆盖原文件。

            2.删除

                    boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。

                    void deleteOnExit():在程序退出时删除指定文件。

            3.判断

                    boolean exists():文件或目录是否存在。

                    boolean isFile():是否是一个标准文件。

                    boolean isDirectory():是否是一个目录。

                    boolean isHidden():是否是一个隐藏文件。

                    boolean isAbsolute():是否为绝对路径名。

                    boolean canRead()是否可读

                    boolean canWrite()是否可写

            4.获取

                    String getName():返回由此抽象路径名表示的文件或目录的名称。

                    String getPath():获取相对路径

                    String getParent():获取父级目录,如果此路径名没有指定父目录,则返回 null。

                    String getAbsolutePath():获取绝对路径

                    long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间。

                    long length():返回由此抽象路径名表示的文件的长度.

                    static File[] listRoots():列出系统的可用的根

                    String[] list():获取指定目录下的所有文件和文件夹的名称数组

                    File[] listFiles():获取指定目录下的所有文件和文件夹的File数组

            5.修改

                    boolean renameTo(File dest):重新命名此抽象路径名表示的文件。

    转换流

        IO流分为字节流与字符流,但是如何实现字节流与字符流之间的转化呢?这就要使用到下面所讲的内容了。

            InputStreamReader

                    字节流转化为字符流的桥梁,它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。

            构造方法

                    InputStreamReader(InputStream in)

                    InputStreamReader(InputStream in, String charsetName)

                    示例:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

            OutputSteamWriter

            字符流通向字节流的桥梁可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。

        构造方法

                    OutputStreamWriter(OutputStream out)

                    OutputStreamWriter(OutputStream out, String charsetName)

           应用示范

                    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

                    System.in 默认设备为键盘

    标准输入与输出

         System类中的字段:in,out,它们各代表了系统标准的输入和输出设备,默认输入设备是键盘,输出设备是显示器。

         System.in的类型是InputStream.

         System.out的类型是PrintStream

    Properties类

        Properties是hashtable的子类,也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。

    是集合中和IO技术相结合的集合容器。

    该对象的特点:可以用于键值对形式的配置文件,那么在加载数据时,需要数据有固定格式:键=值。

    构造方法

        |--Properties():创建一个无默认值的空属性列表。

        |--Properties(Properties defaults):创建一个带有指定默认值的空属性列表。

    常用方法:

         |--Object setProperty(String key,String value)

    调用Hashtable的put方法,设置键值对

         |--String getProperty(String key)

    用指定的键在此属性列表中搜索属性

         |--Set<String> stringPropertyNames

    获取集合中所有的键

         |--void load(InputStream in)

    从输入流中读取属性列表(键和元素对)。

            |--void load(Reader reader)

    按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

            |--void list(PrintStream out)

    将属性列表输出到指定的输出流。

            |--void list(PrintWriter out)

    将属性列表输出到指定的输出流。

            |--void Store(OutputStream out,String comments)

    以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。

            |--void store(Writer writer, String comments)

    以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。

    打印流

            可以直接操作输入流和文件,该流提供了打印方法,可以将各种数据类型的数据都原样打印。

            字节打印流:PrintStream

            构造函数可以接收的参数类型:

            1.file对象:File

            2.字符串路径:String

            3.字节输出流:OutputStream

            字符打印流:PrintWriter

            构造函数可以接收的参数类型:

            1.file对象:File

            2.字符串路径:String

            3.字节输出流:OutputStream

            4.字符输出流:Writer

            注:与其他输出流不同,PrintStream 永远不会抛出IOException,而且打印流可以根据指定编码转成字符!

  • 相关阅读:
    C# 中的EventHandler
    Leetcode:Combinations 组合
    Leetcode:Minimum Path Sum
    [LeetCode] Container With Most Water
    一个数n的最少可以由多少个数的平方和组成
    单链表的归并排序
    几个常用的操作系统进程调度算法(转)
    字符串的最长重复子串(转)
    linux静态链接库与动态链接库详解
    简易的hashtable实现
  • 原文地址:https://www.cnblogs.com/yueyazhishang/p/4050758.html
Copyright © 2011-2022 走看看