版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java流(下),GZip格式文件的压缩/解压(了解) Jar格式文件的压缩/解压(了解) NIO概述 Buffer的用法 Channel Charset 文件锁,在java中对文件进行gzip格式压缩(示例10-10),和gzip格式压缩相关的类: java.util.zip.GZIPOutputStream,在java中对gzip文件解压缩(示例10-11),和解压gzip格式文件相关的类 Java.util.zip.GZIPInputStream,在java中对文件进行jar格式的压缩解压缩,和jar压缩相关的类 java.util.jar.JarOutputStream java.ut
2、il.jar.JarEntry java.util.jar.Attributes/java.util.jar.Attributes.Name 和jar解压相关的类 java.util.jar.JarInputStream java.util.jar.JarEntry java.util.jar.JarFile java.util.jar.Attribute/java.util.jar.Attribute.Name,NIO,和“流”中对数据处理方式不同,在NIO中通过“块”读取方式来处理数据 通过NIO,可以让 Java 程序员实现高速 I/O 而无需编写自定义的本机代码,用BufferedRe
3、ader 读文本文件 3-1,引入相关的类 import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; 构造一个BufferedReader对象 FileReader fr=new FileReader(mytest.txt); BufferedReader br=new BufferedReader(fr);,用BufferedReader 读文本文件 3-2,利用BufferedReader的方法读取文本文件的数据 br.readLine(); /读取一行数据,返回字符串 关闭相
4、关的流对象 br.close(); fr.close();,用BufferedReader 读文本文件 3-3,演示:示例 4,/*创建一个FileReader对象.*/ FileReader fr=new FileReader(mytest.txt); /*创建一个BufferedReader 对象.*/ BufferedReader br=new BufferedReader(fr); /*读取一行数据.*/ String line=br.readLine(); while(line!=null) System.out.println(line); line=br.readLine();
5、/*流的关闭.*/ br.close(); fr.close();,创建一个 FileReader 对象,创建一个 BufferedReader对象,用BufferedWriter 写文本文件 3-1,引入相关的类 import java.io.FileWriter ; import java.io.BufferedWriter ; import java.io.IOException; 构造一个BufferedWriter对象 FileWriter fw=new FileWriter(mytest.txt); BufferedWriter bw=new BufferedWriter(fw);
6、,用BufferedWriter 写文本文件 3-2,利用BufferedWriter的方法写文本文件 bw.write (“hello”); 相关流对象的清空和关闭 bw.flush(); fw.close();,用BufferedWriter 写文本文件 3-3,演示:示例 5,/*创建一个FileWriter 对象*/ FileWriter fw=new FileWriter(mytest.txt); /*创建一个BufferedWriter 对象*/ BufferedWriter bw=new BufferedWriter(fw); bw.write(大家好!); bw.write(我
7、正在学习BufferedWriter。); bw.newLine(); bw.write(请多多指教!); bw.newLine(); bw.write(email: studyjb-); bw.flush(); fw.close();,创建一个 BufferedWriter对象,创建一个 FileWriter 对象,Buffer类,Buffer类表示的是一个容器,它可以看成是一个数组 有八种常用的缓冲区类: ByteBuffer CharBuffer ShortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer MappedByteBuf
8、fer只是一种特殊的 ByteBuffer。它将文件所在区域直接映射到内存,capacity/position/limit,在Buffer中,有三个重要的概念:容量(capacity)、界限(limit)和位置(position): 容量(capacity):缓冲区的 容量(capacity) 表示可以储存在缓冲区中的最大数据容量。缓冲区的容量不可能为负值,在创建后也不能改变; 界限(limit):第一个不应该被读出或者写入的缓冲区位置索引; 位置(position):用于指明下一个可以被读出的或者写入的缓冲区位置索引。在从通道读取时,position 变量跟踪已经写了多少数据。更准确地说,它
9、指定了下一个字节将放到数组的哪一个元素中。 0 = position = limit = capacity,Buffer中常用方法,int capacity():返回缓冲区的capacity大小; Buffer clear():清空缓冲区:它将limit设置成和capacity一样,而将position设置成0。注意这个方法并不会将缓冲区中的数据清除掉; Buffer flip():它将界限(limit)设置成当前的位置值(position),然后将位置值(position)回复到0,并返回重新设定limit和position后的缓冲区; boolean hasRemaining():判断当前
10、位置(position)和界限(limit)之间是否还有元素可供处理; int limit():返回缓冲区的界限(limit); Buffer limit(int newLt):重新设置界限(limit)的值,并返回一个具有新的limit的缓冲区对象;,Buffer常用方法(con.),Buffer mark():设置缓冲区的书签(mark),它只能在0和位置(position)之间做书签(mark),mark值和前面的limit、position、capacity的值的大小关系是:0 = mark = position = limit = capacity; int position():返
11、回缓冲区中的当前位置(position); Buffer position(int newPs):设置缓冲区的新位置,并返回一个具有新的位置的缓冲区对象; int remaining():返回当前位置和界限(limit)之间的元素个数; Buffer reset():将位置回复到使用mark()方法设置的书签处; Buffer rewind():将位置(position)设置成0,取消设置的书签。,Buffer例子(示例10-12/13),CharBuffer buff = CharBuffer.allocate(9);/1 buff.put(a);/2 buff.put(b);/3 buff
12、.put(c);/4 buff.flip();/5 System.out.println(buff.get();/6 buff.clear();/7,Buffer例子,a,a,a,a,a,a,a,a,a,a,b,a,a,a,a,a,a,a,capacity,limit,position,position,capacity,limit,a,b,c,a,a,a,a,a,a,position,capacity,limit,a,b,c,a,a,a,a,a,a,position,capacity,limit,a,b,c,a,a,a,a,a,a,position,capacity,limit,a,b,c,
13、a,a,a,a,a,a,position,capacity,limit,/1,/2,/4,/5,/6,/7,Channel (示例10-14),可以通过Channel读取或者写入对象 和流类似,但Channel是双向的,而流是单向的 在JDK1.4中对java.io包中的很多的类都进行了改写,其中的很多类都加入了获得对应的通道的功能,如FileInputStream/FileOutputStream的getChannel(),字符集(示例10-15),Java中编码采用Unicode方式,而很多操作系统并不使用Unicode,那么在从系统中读取数据,在Java中进行处理的时候,可能会出现乱码等
14、问题 Java中,通过字符集的编码器和解码器(Character-set encoders and decoders),使得我们可以直接访问操作系统内置的字符集。,Charset,和字符集相关的包: java.nio.charset:用于处理字符集的类 java.nio.charset.spi:用于提供字符集处理的服务的类:CharsetProvider 通过给Charset的forName()方法传递一个相应字符集的名字,就可以获得一个Charset对象: Charset cs = Charset.forName(ISO-8859-1); Charset cs1 = Charset.forName(GBK);,文件锁,现代的操作系统都提供了文件锁定功能 可以通过FileChannel的lock()/tryLock()方法来获得文件锁FileLock对象,从而锁定文件 记得处理完文件后通过FileLock的release()方法释放文件锁,小结,java.io包中的内容 Java基本I/O流 字节流/字符流 节点流(低级流)/处理流(高级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同的签订
- 工程分包安全合同
- 2024年汽车俱乐部会员服务协议书
- 房屋施工合同书模板
- 2024企业员工培训协议书范本
- 商业销售合作协议书
- 房屋租赁终止合同书编写技巧
- 2024年软件公司员工培训合同
- 2024行李保管协议书样本
- 店铺分销合作协议
- 八年级上册美术-5《中国山水画》【课件】
- 工程量清单及招标控制价编制、审核入库类服务方案
- 浙江省嘉兴市2023年八年级上学期期中数学试卷(附答案)
- 求雨后姐弟小故事
- 圆二色谱原理与应用课件
- 绘制建筑平面图的步骤
- Python语言基础与应用学习通超星课后章节答案期末考试题库2023年
- 海藻与海藻养分课件
- 煤矿井筒维修工理论知识考试复习题库(浓缩300题)
- 六年级上册英语说课稿- Module 6 Unit 2 I've got a stamp from China. -外研社(三起)
- 大众维修手册途安电路图
评论
0/150
提交评论