`
lighter
  • 浏览: 495884 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读源码之旅 java.io包

阅读更多
对于下图,研究了一下常用的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
分享到:
评论

相关推荐

    Hadoop源码_NativeIO.java

    org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z Hadoop源码_NativeIO.java

    java.io.FileNotFoundException: *****(Too many open files)

    NULL 博文链接:https://yizhilong28.iteye.com/blog/1154098

    java源码包实例源码JAVA开发源码50个合集.zip

    Java实现的点对点短消息发送协议(smpp)开发包源码.rar Java实现的视频播放程序源码.rar Java实现移动的遮照效果.rar JAVA实现超级玛丽.zip Java实现跟踪鼠标运行坐标的源码.rar Java手机与计算机互发彩信源码.rar ...

    java.util包源码pdf版

    java.util包源码,pdf版,方便打印

    card.io for eclipse 根据最新版card.io编译

    card.io for eclipse 根据最新版card.io编译,绝对好用

    java jdk io包类详解

    java的jdk源码解析,主要解析io、nio相关的类组织结构图

    drawio.js源码

    基于mxgraph.js的基础之上二次开发的,目前最强大的绘图类工具里面排名前一、二名的 draw.io 生成组态编辑器.

    基于socket.io聊天室功能

    socket.io编写的聊天室,群聊,单聊,创建聊天室,对于代码变量的定义,并没有发心思取,只是安当时想的来,页面不是很友好,希望能提供给用socket.io的朋友一点点的经验

    node.js+socket.io离线包+聊天室源码

    来源于网上的博文,我对源码做了一些增强,并把需要的node.js、socket.io、jQuery、服务端和客户端源码,全部打在一起(node.js的npm需要在线安装,聊天室样例也有引用到互联网上的js文件,我把它们全部都本地化了,...

    Android实现下载zip压缩文件并解压的方法(附源码)

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import ...

    draw.io源码框图

    draw.io源码框图

    java7源码-JavaIO:JavaIO

    java.io.InputStream java.io.OutputStream java.io.Reader java.io.Writer 4. FileInputStream和FileOutputStream是什么? 这是在拷贝文件操作的时候,经常用的两个类。在处理小文件的时候,它们的性能还不错,在大...

    java base64源码+jar包

    java源码,base64转码解码,包括源码和jar包,图片或文件与base64互相转换。

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker org.directwebremoting.servlet.DwrServlet &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; ...

    java操纵excel的jar包(jxl.jar包 源码)

    java操纵excel的jar包(jxl.jar包 源码)java操纵excel的jar包(jxl.jar包 源码)java操纵excel的jar包(jxl.jar包 源码)java操纵excel的jar包(jxl.jar包 源码)java操纵excel的jar包(jxl.jar包 源码)java操纵...

    java. lang . UnsatisfiedLinkError: org. apache . hadoop. io. nativeio. NativeIOSWindows . access0

    我在进行MapReduce本地测试的时候,遇见下面的报错: ...解决方法:①第一步:在项目工程中加入NativelO.java,注意包名必须与源码中一致 ②第二步:将access方法的返回值改为true,不让他去调用access0() 类似

    Java源码包100个设计实例.zip

    Java源码包100个设计实例, 大量 实例,可以作为你的学习设计参考。 实例如下: Applet钢琴模拟程序java源码 Calendar万年历 copass源代码.rar DataBuffer在Java中使用ADO.NET.rar ...Java软件度量源码.ra

    Hadoop-NativeIO.java

    解决本地调试Hadoop 异常。 org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    项目源码-java网络五子棋游戏

    import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.sql.Time; import java.util.logging.Level; import java.util.logging....

Global site tag (gtag.js) - Google Analytics