这是很久前另一个BLOG上的,现在不用了。转过来吧,方便查看...
输出流
流程示意图:
不同的情况:
1.
调用
write( )
方法,把数据写入缓冲区,
i
如果缓冲区被填满
,将自动执行
2,3
步,把数据转换为字节
,写入到下一个缓冲区
;
(1)
如果此缓冲区又被填满,则自动执行第
4
步,把转换好的数据保存到缓冲数组
;
(2)
如果未被填满则不会执行第
4
步。
<
将循环执行,未写入的数据源
继续写入缓冲区,直到数据被全部写入
>
ii
如果未被填满
,则不执行
2
,
3
步。
2.
当出现未被填满而不发送的情况,可以调用
flush( )
方法进行强制刷出操作。
API
中的一些定义:
ByteArrayOutputStream
1.
此类实现了一个输出流,其中的数据被写入一个 byte
数组。
2.
缓冲区会随着数据的不断写入而自动增长。
3.
可使用
toByteArray()
和
toString()
获取数据。
OutputStreamWriter
1.
OutputStreamWriter
是字符流通向字节流的桥梁:可使用指定的
charset
将要写入流中的字符编码成字节。
2.
每次调用
write()
方法都会导致在给定字符(或字符集)上调用编码转换器。
3.
传递给
write()
方法的字符没有缓冲。
BufferedWriter
1.
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
2.
可以指定缓冲区的大小,或者接受默认的大小。
还有就是
flush( )
方法的定义——
1.
刷新该流的缓冲。
2.
如果该流已保存缓冲区中各种
write()
方法的所有字符,则立即将它们写入预期目标。
3.
然后,如果该目标是另一个字符或字节流,则将其刷新。
4.
因此,一次
flush()
调用将刷新
Writer
和
OutputStream
链中的所有缓冲区。
*
需要注意的是,
ByteArrayOutputStream
中的数组缓冲区初始大小为
32
字节,随后会按数据大小自动进行调整。
输入流
流程示意图:
1.
把数据源转换为字节数组;
2.
把转换好的字节缓冲数组作为参数源传进
ByteArrayInputStream
流;
3.
与输出流不同的是,第
3
,
4
,
5
步会自动执行,把数组传进下一个缓冲区;
4.
等到调用
read( )
方法,把缓冲中数据读出
。
API
中的一些定义:
ByteArrayInputStream
1.ByteArrayInputStream
包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
2.
内部计数器跟
踪
read
方法要提供的下一个字节。
InputStreamReader
1.
InputStreamReader
是字节流通向字符流的桥梁:它使用指定的
charset
读取字节并将其解码为字符。
2.
每次调用 InputStreamReader
中的一个 read()
方法都会导致从底层输入流读取一个或多个字节。
3.
要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。
BufferedReader
1.
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
2.
可以指定缓冲区的大小,或者可使用默认的大小。
close( )
方法——
1.
关闭该流并释放与之关联的所有资源。
2.
在关闭该流后,再调用
read()
、
ready()
、
mark()
、
reset()
或
skip()
将抛出
IOException
。
3.
关闭以前关闭的流无效。
分享到:
相关推荐
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
主要介绍了Java I/O深入学习之File和RandomAccessFile, I/O系统即输入/输出系统,对于一门程序语言来说,创建一个好...在充分理解Java I/O系统以便正确地运用之前,我们需要学习相当数量的类。,需要的朋友可以参考下
1.内容概要: 包括《Java基础入门(第3版)》的课后习题答案 2.适用人群: Java初学者 ...(4)学习常用的Java库和框架:了解Java的常用库和框架,如集合、I/O流、多线程等,可以帮助你更好地编写代码。
mangoo I / O ... mangoo I / O致力于使开发人员友好,流利且易于理解的Web框架,并具有针对Java生态系统的少量学习曲线。 主要特点 概括地说,这是mangoo I / O的一些关键功能: 直观的配置约定 使用
s2 JavaOOP上机作业全部代码,仅供交流使用
在进入Java NIO编程之前,我们先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,...
我使用了Java Swing库来创建用户界面,并使用Java I/O库来处理文件操作。我还使用了一些其他的Java类和方法,例如JFileChooser、JTextPane、JMenuBar等等。 我希望这个简单的记事本可以帮助其他学习Java编程的人,...
这部分主要学习的内容有:基本程序结构,类与对象,接口,泛型,反射,集合,异常与调试, Java 网络编程, Java I/O和多线程。 学 Java 基础,推荐大家看尚硅谷宋红康老师的 Java 教程,宋老师的课程更适合零基础...
NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的...
通过设计与实现一个桌面系统,使学生深入理解并实践在《程序设计技术》课程中所学的面向对象的思想和方法、图形界面、数据库、I/O流与文件、多线程、网络编程等知识,强化学生利用面向对象的方法对系统进行需求分析...
通过设计与实现一个桌面系统,使学生深入理解并实践在《程序设计技术》课程中所学的面向对象的思想和方法、图形界面、数据库、I/O流与文件、多线程、网络编程等知识,强化学生利用面向对象的方法对系统进行需求分析...
第3篇为Java语言编程进阶,包括Java编程常用知识、Java文件编程、Java文件I/O编程、Java TCP编程、Java UDP编程、Java Swing编程、JDBC编程,最后还给出了一个聊天程序实例和一个数据表操作窗口实例,将Swing、UDP、...
第2篇为核心篇,包括字符串处理、集合类、使用异常处理机制、掌握Java的I/O技术、精通多线程技术、枚举与泛型;第3篇为高级篇,包括Swing基础知识、JDBC技术、Swing高级组件、GUI事件处理机制、网络程序设计;第4篇...
第3篇为Java语言编程进阶,包括Java编程常用知识、Java文件编程、Java文件I/O编程、Java TCP编程、Java UDP编程、Java Swing编程、JDBC编程,最后还给出了一个聊天程序实例和一个数据表操作窗口实例,将Swing、UDP、...
d src/test/jni -force -jni familia.java.util.CMinstdRand0编译 gcc -fPIC -D_REENTRANT -I${JAVA_HOME}/include -I//develop/jdk1.6.0_31/include/linux -shared -o hellojni.so HelloJni.c cl -I "%JAVA_HOME%/...
Java核心技术:I/O、多线程、网络编程、反射、泛型等 Java虚拟机:内存模型、垃圾收集器、类加载机制等 Java企业级开发:Spring、Hibernate、MyBatis等框架原理 数据库和缓存:SQL优化、索引、Redis、Memcached等 分布式...
本资源主要是通过IO对象操作流进行数据的存取。主要功能包括管理员对图书、读者的增删查操作、读者的借阅、读者的还书操作。实现方式:控制台输入输出。 主要是对刚入门的萌新们比较友好~代码... 熟悉掌握I/o流相关操作
这两个项目也都开始试图向其他操作系统上的 Java 应用程序提供对 USB 设备的访问,尽管它们都还没有开发出可以使用的包(参阅 参考资料 中有关本文中讨论的这两个项目及其他项目的资料)。 在本文中,将对 jUSB 和 JSR...
java笔试题2015 #Sparrow sparrow 是一个简单高效的http server,纯C语言开发(基于Linux),目前主要用在本人个人的网站. #Online demo #150行的一个demo httpd,帮你理解整个结构 如果需要理解代码的结构,建议去...
利用文件存储数据,帮助理解I/O流的概念;目前全网简单系统基本都是利用数据库实现存储数据,而对于一些没学数据库又想做个简单系统练手的,该系统基本能符合要求。