对于下图,研究了一下常用的InputStream,ByteArrayInputStream,BufferedInputStream,FileIputStream,ObjectInputStream,DataInputStream 以及相对应的OutStream类。
看完还是有一些收获的:
1、对其整体结构更清晰了一些,基本上在什么场合想用哪一个流心里都比较有数了。
2、明白了为什么一些类在write后,还要flush一下。举一个例子,看一下BufferedOutputStream里面的几个方法就明白
public synchronized void write(int b) throws IOException {
if (count >= buf.length) {
flushBuffer();
}
buf[count++] = (byte)b; //这里的write作用是把数组放入buf数组,作当缓冲
}
public synchronized void flush() throws IOException {
flushBuffer(); //写入数据
out.flush(); //调用包装的类的flush方法
}
private void flushBuffer() throws IOException {
if (count > 0) {
out.write(buf, 0, count);
count = 0;
}
}
3、有一些Stream关闭不关闭都是一样的,例如像 ByteArrayInputStream
4、ByteArrayInputStream类有如下方法:
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
注意这里的 0xff,搜索一些资料
引用
0xFF is hexadecimal, you can Wikipedia that part.
FF is a representation of
00000000 00000000 00000000 11111111
(a 32-bit integer)
& means bit-wise "and", and so when you use it on two ints, each pair of bits from those two ints is and-ed and the result is placed in the resultant int:
Example (showing 16 bits only)
0101 1100 1010 1100
&0000 0000 1111 1111
-----------------
=0000 0000 1010 1100
引用
Bytes are signed in Java. In binary 0x00 is 0, 0x01 is 1 and so on but all 1s (ie 0xFF) is -1, oxFE is -2 and so on. See Two's complement, which is the binary encoding mechanism used.
http://en.wikipedia.org/wiki/Two's_complement
5、比较复杂的类:ObjectOutputStream,要花多一些时间去看
6、研究RandomAccessFile类,可以复习一下按位运算符。
运算符 符号
按位与 &
按位左移 <<
按位取反 ~
按位或 |
按位右移 >>
按位异或 ^
无符号右移 >>>
- 大小: 90.8 KB
分享到:
相关推荐
Java JDK源码是Java开发人员深入...总的来说,研究Java JDK源码是一次深入学习之旅,它可以帮助开发者从底层理解Java的工作方式,提升编程技艺,解决复杂问题,并且更好地利用Java的特性来设计高效、可靠的软件系统。
总结,rt.jar源码的探索是一次深入Java世界的学习之旅,它将帮助开发者从底层理解Java,提高编程技能,为解决复杂问题提供更强大的武器。只有深入掌握rt.jar的内在逻辑,才能更好地驾驭Java这一强大的编程语言。
Java JDK 源码是Java开发者的宝贵资源,它揭示了Java平台的核心工作原理。这里主要探讨的是基于JDK 1.8.0_...尽管源码阅读可能有一定的难度,但对于提升编程技能和理解Java平台的工作方式,无疑是一次宝贵的探索之旅。
Java Development Kit (JDK) 1.8 是Java编程语言的一个关键版本,它引入了许多重要的特性和改进。...对于希望深入理解Java并成为更好的开发者的程序员来说,JDK 1.8源码的探索是一次不可或缺的学习之旅。
《深入解析JDK1.7源码:开启Java开发者的技术之旅》 在Java开发领域,对JDK源码的理解和掌握是提升技术水平的关键步骤。JDK1.7的src.zip源码压缩包为开发者提供了宝贵的参考资料,使得我们可以深入了解Java语言的...
Java JDK源码学习是深入理解Java编程语言的关键步骤,它能帮助开发者洞悉语言底层的工作原理,提升编程技能和优化代码的能力。...这是一场深度技术探索之旅,也是成为一名杰出Java开发者的必经之路。
学习 Java 语言是一个系统的过程,涉及多个阶段,每一步都需要专注和理解。以下是一个详细的 Java ...遵循上述步骤,逐步深入,Java 学习之旅将更加高效且充实。不断实践和积累经验,你将成为一名熟练的 Java 开发者。
在大数据学习之旅中,理解NIO的这些核心概念是基础。首先,我们需要了解`java.nio`包中的各类通道类,如FileChannel、SocketChannel和ServerSocketChannel等,它们分别对应于文件操作、网络连接的客户端和服务端。...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。在“文档源码_java_”这个资源中,我们很显然...无论你是Java新手还是有经验的开发者,这份资料都能为你的Java编程之旅增添新的动力。
【标题】"java毕设之旅游网站设计"涵盖了多个IT领域的关键知识点,主要涉及Java编程语言、前端开发、后端架构、数据库管理和毕业设计实践。这个项目是一个完整的餐饮旅游类网站,适合用作大学生的毕业设计或课程设计...
Java编程语言作为世界上最受欢迎的编程语言之一,以其跨平台、面向对象的特点深受广大开发者喜爱。这个压缩包文件的标题——"绝对经典的JAVA源代码",暗示了其中...所以,不要犹豫,赶紧下载并开始你的Java学习之旅吧!
《深入解析CoreJava源码》 CoreJava是Java编程领域中的经典...通过研读CoreJava的源码,无论是对Java初学者还是经验丰富的开发者,都将是一次宝贵的提升之旅,它能帮助我们从理论走向实践,真正掌握Java编程的精髓。
在深入探讨Java源码学习心得之前,我们先要理解Java作为一种多用途、面向对象的编程语言,其广泛应用于企业级应用、移动...在实践过程中,不断积累经验,结合文档和社区资源,将使Java源码学习之旅更加充实和有意义。
### Java学习资料&项目源码&教程资源概览 #### 一、Java学习资料 Java作为一门广泛应用的编程语言,在全球范围内拥有庞大的开发者社区。...希望这些资源能够为您的Java编程之旅提供有价值的帮助。
《Geoda:开源地理数据分析平台全面解析》 Geoda,全称为Geographic Data Analysis,是一款强大的开源地理数据分析软件,由亚利桑那州立大学地理信息系统科学与...希望这篇文章能为你的GIS学习之旅提供有力的支持。
《Java霸王的大陆源码——探索Overlord_java的系统开源之旅》 在IT的世界里,开源精神犹如一盏明灯,照亮了无数开发者前行的道路。当我们谈论“Java霸王的大陆”时,我们实际上是在探讨一个名为Overlord_java的项目...
Java的`java.io`包提供了文件读写的基本功能,开发者需要学会如何遍历目录、打开文件以及获取文件信息。 6. **播放列表管理**:用户可能希望创建和管理多个播放列表。这需要实现数据结构(如链表或数组)来存储歌曲...
《Java编程之旅:黑马程序员零基础辅导班课程详解》 在IT行业中,Java语言以其强大的跨平台能力和丰富的库支持,始终占据着重要的地位。对于初学者来说,掌握Java开发技术是进入这个领域的关键一步。本教程针对零...
《nbplugin2:开启NetBeans与OpenJDK的无缝整合之旅》 在Java开发的世界里,NetBeans作为一款强大的开源集成开发环境(IDE),一直深受程序员喜爱。它提供了丰富的功能,包括代码编辑、调试、项目管理等,为开发者...
在“学通Java的24堂课”这个学习资源中,你将踏上一条全面而深入的Java编程之旅。这门课程由清华大学出版社出版,旨在帮助初学者和有经验的开发者进一步提升Java技能。课程涵盖了从基础到高级的多个主题,通过丰富的...