zoukankan      html  css  js  c++  java
  • 文本IO 二进制IO

    一、文本IO  字符流

    1. 使用PrintWriter写入文件后,必须调用close(),否则数据不能正确保存在文件中。
    2. Scanner的next()读取一个由分隔符分隔的字符串,nextLine()读取以换行符结束的行。
    3. 标记读取不会读取分隔符,所以nextLine()会把所有标记也算作一个标记进行读取。
    4. Scanner的useDelimiter(String s)可以改变分隔符,默认是空格。
    5. 从URL读取数据,创建URL对象,调用url.openStream(),就可以用Scanner读取url.openStream()中的数据了。

    二、二进制IO   字节流

     1. 文本文件是由字符序列构成的,二进制文件有bit序列构成,不涉及编码、解码,效率高。在计算机中,本质上,所有的文件都是二进制文件。文本IO建立在二进制IO上,提供了一层抽象,用于字符层次编码,解码。

     2.1)FileInputStream、FileOutputStream为基本输入输出,只能用来读取字节,即最基本的读取二进制数据。 

        2)DataInputStream、DataOutputStream读取写入字节,将他们转换为合适的基本类型或字符串。

        3)java中字符用统一码表示,一个统一码由2个字节构成。

        4)ObjectInputStream、ObjectOutputStream读取写入对象,包含了DataInputStream、DataOutputStream的所有功能。对象需要实现Serializable接口才可以被写入,即可序列化的,对象中存在不能被序列化的对象时,不可以被序列化,需要在不能被序列化的对象成员前加transient关键字,静态变量不会被序列化。

    3.RandomAccessFile,随机访问文件。

    三、参考  http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html          

    四、构建一个输入输出流时,最内层是输入输出的源,即首先根据源构造第一步流,源包括文件,内存,控制台等。第二步根据需要选用装饰器,如是否带缓存,是否转换成标准类型等,即            添加有用的接口和属性,改变流的行为。

    五、标准IO

            System.out System.err 这两个是被包装成了printStream对象。

            System.in是一个未经加工的InutStream,所以在使用它时需要进行包装。

            通过System.setIn(InputStream),setOut(PrintStream),setErr(PrintStream)可对标准IO重定向,如重定向到文件。

  • 相关阅读:
    windows mysql 的myini
    NuGet 程序源包
    链表更新
    程序包需要 NuGet 客户端版本“XXXXX”或更高版本,但当前的 NuGet 版本为“XXXXXXXXXX”
    chrome下调试安卓app 之 ionic
    ionic3 在ios9.0 系统下 会出现ReferenceError:Can't find variable:Intl 错误提示
    抓取html 生成图片
    grunt 打包 分解(并非原创)
    关于 vue 日期格式的过滤
    Android Studio
  • 原文地址:https://www.cnblogs.com/ontway/p/7447333.html
Copyright © 2011-2022 走看看