Posts
JieChen.Me
Cancel

PushbackInputStream可以让程序试探性地读取字节流的前若干个字节来判断是否该流是自己期望的。如果是,可以处理后续流数据。如果不是,可以回退读取的字节,把流交给其他人。 这个例子演示一个简单的场景,读取Java Class文件,判断是否是合法的Class 魔数是否为合法的”CAFEBABE” Major Version是否是期望的版本 首先查阅Java规范,可...

ObjectOutputStream和ObjectInputStream配对使用来处理实现了Serializable接口的对象。Serializable,串行化,这种计算机专用术语太过于拗口,如果按照我自己的解释,说得最通俗一点就是把对象里面各个需要写出的数据按照事先设计好的的规则和格式排列,组成一个二进制的数据行,写出到目标地。目标地再按照一定的格式把数据解析出来,还原成原始的对象。 串...

DataOutputStream、DataInputStream可以将Java中的基本类型以类似对象的方式存储或读取,不再以字节方式处理,方法非常简单。但在处理中文字符时,存储方式就比较特殊。 基本类型的定长读写 Java基本类型都是定长的,也就是每个基本类型通过DataInputStream写入文件时,都是定长地写。在DataInputStream读取时不需要程序员考虑下一个类型从何处...

ByteArrayInputSteam类将内存中的字节数组作为数据源,利用这个特性,可以通过ByteArrayInputSteam重用一些需要特殊处理、或者重复使用的字节数组或大字符串,比如XML格式的内容。 一个有用的场景是对于异常的特殊处理。一般而言,我们简单地通过 Exception.printStackTrace()方法直接输出异常栈到标准输出stdout。 异常的一般性处理 ...

FilterInputStream和FilterOutputStream的使用场景比较少,但是提供了一个可扩展的流处理的可能性,它采用了装饰者设计模式,FilterInputStream是所有具体装饰者的父类,内部包裹一个InputSteam的原始类作为被装饰对象,通过具体的FilterInputStream的子类实现来调用InputStream的流处理功能,并在流基础上附加额外的功能。 ...

通过SequenceInputStream可以连接多个InputStream对象,按照排列顺序依次读取各个InputStream中的数据。这个特点很容易想到一个非常常见的场景,就是文件合并。下面的例子简单演示一个文件的拆分和合并的过程。 文件拆分 split函数根据指定的size参数,将文件拆分成每个size大小的小文件。按照 .1、 .2、 .3的顺序命名各个文件。 public s...

一般性文件的顺序读写提供的函数或者一个字节/字符地读写,或者以字节/字符数组的方式一次性读入一定数量的数据进入数组。后者其实相当于一个缓存。但JDK又额外提供了BufferedInputStream和BufferedOutputStream。他们的处理方式非常简单。 看个例子 String srcFile = "./test/qq.exe"; String destFile = "/te...

一般性文件的顺序读写有2种方式:基于二进制;基于字符。无论哪种方法都非常简单。但有一些细节比较重要。 顺序读写 下面的例子是最常见的读写顺序文件的方式,以FileInputStream/FileOutputStream或者FileReader/FileWriter来处理。 FileInputStream/FileOutputStream String filename1 = "./t...

在Weblogic中发布的app,通常是以上下文路径的方式来访问的,比如只能访问http://server/myapp,但无法访问http://server。很多情况下我们希望通过直接访问http://server/的方式来调用app。重新定义context path在生产环境中几乎是无法实现的。解决方法是安装第三方的代理服务器,或者你也可以采用下面的技巧。 下面的内容,和Proxy...

Many Java/JEE applications open the JMX interface/port to external for tuning or monitor purpose and most of them allow anonymous access. That is to say anyone knows the remote hostname and its JMX...