亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JAVA IO流要點 必記必懂

標簽:
Java

1、在补零的语句中byte数组buf[i]不能直接与整形 0xf比较大小,这样会导致强转让数据出错。

2、在补零的语句中没有判断buf[i]需要大于零

正确的代码如下:

if((buf[i]&0xff)>0 && (buf[i]&0xff)<=0xf){

System.out.print("0");

}
3、使用缓冲字节流复制确实是最快的方式,但对于小文件10M以下的文件体现不出优势,对于百兆文件正确使用,时间可以控制到50ms内。复制文件最快的做法是将批量读取到的字节数组使用缓冲写入到文件,在机器性能范围内字节数组越大越快。在循环写入的过程中不需要使用flush,缓冲输入流在关闭的时候会将所有缓冲区的数据全部写入文件,使用flush刷新缓冲就失去了缓冲的意义。最后关闭IO流和文件流应该在finally中关闭,否则IO异常时执行不到close语句,IO流仍然没有关闭。
经过测试,8M多的文件把flush()放在While循环外面,速度提升很明显。而单字节带缓冲的字节流方法速度比批量带缓冲的字节流方法慢很多。
4、对象序列化就是将Object转换成byte序列,反之叫对象的反序列化。对象必须实现序列化接口(Serializable),才能进行序列化,否则将出现异常。而transient关键字修饰的变量,该元素不会进行JVM默认的序列化,但是可以自己完成这个元素的序列化。
*///序列化
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException{
s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作
s.writeInt(要序列化的元素);//自己完成序列化
}//反序列化
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, ClassNotFoundException {
s.defaultReadObject();
this.(要序列化的元素)=s.readInt();
}
5、一个类实现了序列化接口,那么其子类都可以进行序列化,对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用,当父类没实现Serializable接口,子类继承父类并实现Serializable接口,子类序列化时,父类的部分是没有被序列化的,那么反序列化的时候就没办法找到父类的部分,这时候怎么办呢,就调用父类构造器初始化父类部分。

點擊查看更多內容
3人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
2
獲贊與收藏
37

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消