一、文本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重定向,如重定向到文件。

文本IO 二进制IO的更多相关文章

  1. jdbc基础 (三) 大文本、二进制数据处理

    LOB (Large Objects)   分为:CLOB和BLOB,即大文本和大二进制数据 CLOB:用于存储大文本 BLOB:用于存储二进制数据,例如图像.声音.二进制文件 在mysql中,只有B ...

  2. netty实现websocket发送文本和二进制数据

    原文:https://huan1993.iteye.com/blog/2433552 最近在学习netty相关的知识,看到netty可以实现 websoket,因此记录一下在netty中实现webso ...

  3. 【python】3.x,string与bytes的区别(文本,二进制数据)

    Python 3对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示, 二进制数据则由bytes类型表示. 不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也 ...

  4. 泛函编程(38)-泛函Stream IO:IO Process in action

    在前面的几节讨论里我们终于得出了一个概括又通用的IO Process类型Process[F[_],O].这个类型同时可以代表数据源(Source)和数据终端(Sink).在这节讨论里我们将针对Proc ...

  5. 泛函编程(36)-泛函Stream IO:IO数据源-IO Source & Sink

    上期我们讨论了IO处理过程:Process[I,O].我们说Process就像电视信号盒子一样有输入端和输出端两头.Process之间可以用一个Process的输出端与另一个Process的输入端连接 ...

  6. 泛函编程(35)-泛函Stream IO:IO处理过程-IO Process

    IO处理可以说是计算机技术的核心.不是吗?使用计算机的目的就是希望它对输入数据进行运算后向我们输出计算结果.所谓Stream IO简单来说就是对一串按序相同类型的输入数据进行处理后输出计算结果.输入数 ...

  7. 泛函编程(32)-泛函IO:IO Monad

    由于泛函编程非常重视函数组合(function composition),任何带有副作用(side effect)的函数都无法实现函数组合,所以必须把包含外界影响(effectful)副作用不纯代码( ...

  8. 《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 && 检查一个字符串是文本还是二进制

    过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: impor ...

  9. 文件操作总结:关于文本和二进制流(typeText&typeBinary)

    本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 总结: CFile,其自身是不提供缓冲区的(?但CFile又有一个Flush,这一点目 ...

随机推荐

  1. mysqldump备份时,--master-data选项的作用是什么?

    需求描述: 今天在研究mysql的备份和恢复,使用mysqldump备份数据库时,用到--master-data选项, 在此,测试并记录选项的作用 测试过程: 1.不使用--master-data进行 ...

  2. GIS-002-gdal2srtmtiles使用注意事项

    本次安装和配置过程重点参考了: 1.http://blog.csdn.net/wjkwjk/article/details/52560236 2.http://blog.csdn.net/wjkwjk ...

  3. Java中自己定义缓存方式

    说说自己在开发中经常用到的写法. /** * 数据缓存 * @author * */public class DataCache {    /** 对象缓存*/    public static Ma ...

  4. grep递归查找子目录

    想要在各种文件里面找一个指定的文本,本来的方法太土了,在网上搜了一下,发现个好的方法,不过也有些问题.原文如下: 第一个,这个是看别人脚本的,配合find实现,-maxdepth指定深度,如果查找到底 ...

  5. 系统启动日志:/var/log/boot.log

    /var/log/boot.log — 记录系统启动时的日志信息,如果系统启动之后有什么异常可以查看该文件信息 [root@localhost ~]# cat /var/log/boot.log # ...

  6. Intel S5000VSA(SAS)主板设置RAID 步骤【转】

    Intel S5000VSA(SAS)主板设置RAID 步骤 我近日亲自安 装了一台服务器,用的是intel S5000VSA 4DIMM主板,因为在安装过程中没有注意到一些细节,所以在安装时碰到了一 ...

  7. 关于.NET玩爬虫这些事

    这几天在微信群里又聊到.NET可以救中国但是案例太少不深的问题,我说.NET玩爬虫简直就是宇宙第一,于是大神朱永光说,你为何不来写一篇总结一下? 那么今天就全面的来总结一下,在.NET生态下,如何玩爬 ...

  8. HTTP/2笔记之错误处理和安全

    零.前言 这里整理了一下错误和安全相关部分简单记录. 一.HTTP/2错误 1. 错误定义 HTTP/2定义了两种类型错误: 导致整个连接不可使用的错误为连接错误(connection error) ...

  9. MQTT的学习研究(十)【转】mosquitto——一个开源的mqtt代理

    MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议,适用于一些条件比较苛刻的环境,进行低带宽.不可靠或间歇性的通信.值得一提的是mqtt提供三种不同 ...

  10. css3 - 字体图标库使用方法

    一些字体图标库的网站 https://icomoon.io/app/#/selecthttp://www.iconfont.cn/http://www.bootcss.com/ http://www. ...