|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
11.3.3粉饰流利用
除依照流的偏向能够把流分别为输出流和输入流两类,依照流读写数据的基础单元把流分别为字撙节和字符流两类之外,还能够依照流是不是间接毗连实践数据源,比方文件、收集、字节数组等,将流又能够分别为实体流和粉饰流两年夜类。
个中实体流指间接毗连数据源的流类,如后面先容的FileInputStream/FileOutputStream和FileReader和FileWriter,该类流间接完成将数据源转换为流对象,在实体流类中完成了流和数据源之间的转换,实体流类都可独自举行利用。
而粉饰流指不间接毗连数据源,而是以别的流对象(实体流对象或粉饰流对象)为基本创建的流类,该类流完成了将实体流中的数据举行转换,加强流对象的读写才能,对照经常使用的有DataInputStream/DataOutputStream和BufferedReader/BufferedWriter等,粉饰流类不成以独自利用,必需共同实体流或粉饰流举行利用。
因为粉饰流都是在已有的流对象基本长进行创立的,以是这类创立流的体例被称作“流的嵌套”,经由过程流的嵌套,能够润色流的功效,比方使读写的速率增添大概供应更多的读写体例,便利数据格局的处置。
粉饰流不改动本来实体流对象中的数据内容,只是从实体流对象基本上创立出的粉饰流对象相对实体流对象举行了一些功效的加强。
流的嵌套是进修IO编程时必需把握的常识,利用它才可让你真正体味到IO类计划时的计划思绪,也能够便利的利用IO类。
上面分离以DataInputStream/DataOutputStream和BufferedReader/BufferedWriter为例子,具体先容粉饰类的利用。
11.3.3.1DataInputStream/DataOutputStream
在后面的示例中,在向流中写进的数据必需起首转换为byte数组或char数组,当写进的数据对照少、对照复杂时,则向流中写进数据时仍是不是很贫苦的,可是假如向流中写进数据对照多时,手动转换数据格局则会对照贫苦。固然,良多文件都是依据文件存储的必要计划了专门的存储格局,可是这些格局一样平常都对照庞大,必要浏览专门的格局文档才能够读写这些特定格局的文件。
为了简化程序员关于流的操纵,使得程序员能够从冗杂的数据格局中摆脱出来,在IO类中专门计划了两个类——DataInputStream/DataOutputStream类简化流数据的读写,利用这两个类,能够完成以加强型的读写办法读写数据,使得读写流的数据变得对照复杂。
在实践利用这两个类时,必需婚配起来举行利用。也就是说,只要利用DataOutputStream流格局写进的数据,在实践读取时才可使用DataInputStream举行读取。由于在利用DataOutputStream向流中写进数据时,除写进实践的数据内容之外,还写进了特定的数据格局,该格局关于程序员来讲是通明的,这类特定的格局不必要程序员熟习,而只必要利用DataInputStream读取便可,读取时的按次和写进时的按次和范例坚持分歧便可。
在DataInputStream类中,增添了一系列readXXX的办法,比方readInt、readUTF、readBoolean等等,而在DataOutputStream类中,也增添了一系列writeXXX的办法,比方writeInt、writeUTF、writeBoolean等等,使得关于数据的读写加倍便利很简单。
上面以读写文件为例子,演示DataInputStream/DataOutputStream类的基础利用。
/**
*摹拟必要存储到文件中的数据
*该类中保留4品种型的数据
*/
publicclassMyData{
booleanb;
intn;
Strings;
shortsh[];
publicMyData(){}
publicMyData(booleanb,intn,Strings,shortsh[]){
this.b=b;
this.n=n;
this.s=s;
this.sh=sh;
}
}
<p>
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。 |
|