• 输入输出处理 上


    第九章 输入输出处理

    9.1 I/O流的概念和划分

    9.1.1数据流是一组有顺序的、有起点和终点的字节集合,是对输入和输出的总称和抽象。一般地,数据流分为输入流(InputStream)和输出流(OutputStream).输入流只能读,不能写,而输出流只能写不能读

    9.1.2 Java流的划分

    Java2定义了两种流:字节流和字符流。字节流为处理字节的输入和输出提供了方便的方法。字符流为字符的输入和输出处理提供了方便。它们采用了统一的编码标准,因而可以国际化。在某些场合,字符流比字节流更有效。需要说明的是,在最底层,所有的输入输出都是字节形式的。基于字符的流只为处理字符提供方便有效的方法。

    字节流类:InputStreamOutputStream

    字节输入流的描述

    InputStream

    表示输入字节流的抽象类

    FileInputStream

    文件字节输入流

    ByteArrayInputStream

    字节数组输入流,把字节数组作为数据源

    FilterInputStream

    过滤字节输入流,提供扩展功能的输入流

    PipedInputStream

    管道输入流,可用于线程之间的通信

    ObjectInputStream

    对象输入流

    SequenceInputStream

    顺序输入流,把多个流顺序合并成一个流

    AuiioInputStream

    音频输入流

    BufferedInputStream

    缓冲输入流

    CipherInputStram

    加密输入流

    DataInputStream

    包含Java标准数据类型方法的输入流

    DigesInputStream

    摘要数据流,在输入过程中,生成流的摘要

    ProgressMonitorInputStream

    过程监视数据流

    PushbackInputStream

    能够向输入流退回一个字节的输入流

    字节输出流的描述和字节输入流的几乎是相对应的 在这里就不在描述

    字符流类:ReaderWriter。这些抽象类处理统一编码的字符流

    字符输入流的描述

    Reader

    表示字符输入流的抽象类

    BufferedReader

    带缓冲功能的字符的抽象类

    CharArrayReader

    把字符数组作为输入源的输入流

    InputStreamReader

    字节楼向字符流转换流

    PipedReader

    管道字符输入流

    StringReader

    把字符串作为输入源的输入流

    LineNumberReader

    能够统计行数的输入流

    PushbackReader

    能够向输入流退回一个字符的输入流

    FileReader

    文件字符输入流

    9.2文件的操作

    9.2.1File

    在进行文件操作时,需要知道一些关于文件的信息。File类提供了一些方法来操纵文件和获取文件信息。

                       File类提供的方法

    Boolean canRead()

    文件是否可读

    Boolean canWriter

    文件是否可写

    Int compareTo(File pathname)

    比较两个文件的名称

    Boolean createNewFile()

    创建文件

    Static File createTemFile(String prefix,String suffix)

    在默认的临时文件目录创建一些空文件

    Boolean detete()

    删除文件

    Void deleteOnExit()

    Java虚拟机终止时删除与调用对象相关的文件

    Boolean equals(Object obj)

    比较两个文件对象

    Boolean exists()

    测试文件是否存在

    File getAbsoluteFile()

    返回绝对文件名

    String getAbsolutePath()

    返回绝对路径

    String getCanonicalPath()

    返回规范的路径字符串

    String getName()

    返回文件名

    String getParent()

    返回父目录

    String getPath()

    返回路径

    Boolean isAbsolute()

    是否是绝对路径

    Boolean isDirectory()

    是否为目录

    Boolean isFile()

    是否为文件

    Boolean isHidden()

    是否隐藏文件

    Long lastModified()

    上次修改的时间

    Long length()

    文件长度

    String []list()

    列出目录中的文件

    String []list(FilenameFilter filter)

    使用过滤器列出目录中的文件

    Boolean mkdir()

    创建目录

    Boolean mkdirs()

    创建多层目录

    Boolean renameTo(File dest)

    重命名文件

    Boolean setReandOnly()

    设置只读

    String toString()

    把文件对象转化成字符串

    URI toURI()

    把文件对象转化成URI对象

    URL toURL()

    把文件对象转化成URL对象

     

     

     

     

     

     

    9.2.2目录

    目录是一个包含其他文件和路径类表的File类。当创建一个File对象且它是目录时,则isDirectory()方法返回true。在这种情况下,可以调用该对象的list()方法来提取该目录内部其他文件和目录的列表。该方法有两种形式。

    第一种形式:String[] list()  文件名列表在一个String对象的数组中返回

    第二种形式:File[]listFiles() 文件对象列表在一个File对象的数组中返回

    9.3字节流处理

    InputStream 的方法

    方法

    描述

    Int available()

    返回当前可读的输入字节数

    Void close()

    关闭输入源,关闭之后的读取会产生IOException

    Void mark(int readlimit)

    在输入流当前点放置一个标记。该流在读取readlimit个字节之前都有效

    Boolean markSupported()

    如果调用的流支持mark()/reset() 就返回true

    Int read()

    如果下一个字节可读则返回一个整型,遇到文件尾返回-1

    Int read(byte b[])

    试图读取b.length个字节到b中,并返回实际成功读取的字节数。遇到文件尾返回-1

    Int read(byte b[],int offset,int len)

    试图读取len个字节到b中,从offert开始存放,并返回实际成功读取的字节数。遇到文件尾返回-1

    Void reset()

    重新设置输入指针到先前设置的标志处

    Long skip(long n)

    跳过n个输入字节,返回实际跳过的字节数

     

    OutputStream的方法

    方法

    描述

    Void close()

    关闭输出流。关闭后的写操作会产生IOException异常

    Void flush()

    刷新输出缓冲区

    Void write(int b)

    向输出流写入单个字节,注意参数是个整型,它允许不必把参数转换成字节型就可以调用write(),但是输出的有效值为b的低8位,高24位被舍弃

    Void write(byte b[])

    向一个输出流写一个完整的字节数组

    Void write(byte b[],int offset,int len)

    输出数组bb[offset]为起点的len个字节区域内的内容

     

    9.3.2 标准输入输出流

    标准输入:stdin 对象时键盘

    标准输出:stdout 对象是屏幕

    标准错误输出stderr 对象是屏幕

     

    public class StdInput {

    public static void main(String[] args) throws IOException {

    System.out.println("input");

    byte b[] = new byte[512];

    int count = System.in.read(b);

    System.out.println("Output");

    for (int i = 0; i < count; i++) {

    System.out.print(b[i] + " ");

    }

    System.out.println();

    for (int i = 0; i < count; i++) {

    System.out.print(b[i] + " ");

    }

    System.out.println("count= " + count);

    }

    }

    9.3.3 文件字节流

    InputStreamOutputStream 都是抽象类不能实例化,因此在实际的应用中都使用的是它们的子类,这些子类在实现其超类方法的同时又定义了特有的功能,用于不同的场合。

    FileInputStream 用于顺序访问本地文件,从超类继承readclose方法,对文件进行操作。

    FileOutputStream 用于向一个本地文件写数据。它从超类继承writeclose方法。

    Boolean canRead()

    文件是否可读

    Boolean canWriter

    文件是否可写

    Int compareTo(File pathname)

    比较两个文件的名称

    Boolean createNewFile()

    创建文件

    Static File createTemFile(String prefix,String suffix)

    在默认的临时文件目录创建一些空文件

    Boolean detete()

    删除文件

    Void deleteOnExit()

    Java虚拟机终止时删除与调用对象相关的文件

    Boolean equals(Object obj)

    比较两个文件对象

    Boolean exists()

    测试文件是否存在

    File getAbsoluteFile()

    返回绝对文件名

    String getAbsolutePath()

    返回绝对路径

    String getCanonicalPath()

    返回规范的路径字符串

    String getName()

    返回文件名

    String getParent()

    返回父目录

    String getPath()

    返回路径

    Boolean isAbsolute()

    是否是绝对路径

    Boolean isDirectory()

    是否为目录

    Boolean isFile()

    是否为文件

    Boolean isHidden()

    是否隐藏文件

    Long lastModified()

    上次修改的时间

    Long length()

    文件长度

    String []list()

    列出目录中的文件

    String []list(FilenameFilter filter)

    使用过滤器列出目录中的文件

    Boolean mkdir()

    创建目录

    Boolean mkdirs()

    创建多层目录

    Boolean renameTo(File dest)

    重命名文件

    Boolean setReandOnly()

    设置只读

    String toString()

    把文件对象转化成字符串

    URI toURI()

    把文件对象转化成URI对象

    URL toURL()

    把文件对象转化成URL对象

  • 相关阅读:
    Android studio 使用flutter插件 运行第一个flutter项目 报错 Warning: License for package Android SDK Build-Tools 28.0.3 not accepted.
    Android 使用GPS获取到经纬度后 无法在Android8.0上使用Geocoder类获取位置信息
    Android 利用 gson 将 json 转成 对象object 集合list
    Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新
    iview组件 eslint校验出错 Parsing error: x-invalid-end-tag
    新建 Vue项目 使用iView报错解决
    Typora 自定义主题 修改左右间距
    Vue 嵌套数组 数组更新视图不更新
    如何在手机设备上实时调试
    通过ReRes让chrome拥有路径映射的autoResponse功能。
  • 原文地址:https://www.cnblogs.com/qingtianBKY/p/6006203.html
Copyright © 2020-2023  润新知