javase_13(字符流)

IO(Input OutPut)流

IO流用来处理设备之间的数据传输

JAVA对数据的操作是通过流的方式

JAVA用于操作流的对象都在IO包中

流按操作对象分为两种: 字节流,字符流

流按流向分为: 输入流,输出流.

其它的内容还是比较简单的,注意的是以下这几个自定义包装类:

实现1.

MyBufferedReader.class

1 package com.javami.kudy.Code13; 2 import java.io.IOException; java.io.IOException; * 自定义MyBufferedReader包装Reader,提供了一个缓冲区的功能.提供了ReadLine功能. 7 * 1.用一个次组合,拿到被包装的Reader对象 8 * 2.定义一个字符数组作为缓冲区 9 * 3.实现一个read方法,填充缓冲区,从缓冲区那里返回一个字符10 * 4.定义一个readLine方法,内部调用read方法,循环读取一行,进行返回11 * 5.定义一个close方法,关闭地底层所包装的流MyBufferedReader extends Reader{14private Reader r;[1024];16int len =0;17int pos = 0;18public MyBufferedReader(Reader r)19 {20this.r = r;21 }* 实现read()方法,实现缓存的功能24 * 分析:25 * 1.当别人第一次调用该方法的时,一次性的去填充缓冲区26 * 2.定义一个len变量记住缓冲区的可用字符的数量27 * 3.将数组的第一个元素返回28 * 4.当别人第二次调用的时,将数组的二个元素返回29 * 5.每次返回元素 len –30 * 6.当len为零时,说明数组没有可用字符啦,那么这时候返回一个-131 * 32 * 思路:33 * 1.定义两个成员变量,len记住可用字符数量,pos记住当前字符的角标34 * 2.判断len是否为0,如果为零要填充缓冲区.并且pos为零35 * 3.判断len,如果为-1,则返回-136 * 4.将pos位置的元素返回.pos++read() throws IOException39 {40if(len ==0)41 {42len = r.read(buf);43pos = 0;44 }45if(len==-1)46return -1;47len–;48return buf[pos++];49 }* 实现readLine方法,实现读一行的功能,53 * 1.循环调用自己的方法的read方法,读取字符54 * 2.知道回车的字符,方法就结束String readLine() throws IOException57 {58StringBuilder sb = new StringBuilder();59int ch;60while((ch=read())!=-1)61 {62if(ch==’\r’)63continue;64if(ch==’\n’)65break;66sb.append((char)ch);67if(ch==-1&&sb.length()==0);69 } }72 @Overrideclose() throws IOException {74 r.close();75 }76 77 @Overrideread(char[] cbuf, int off, int len) throws IOException {79int count=0;80for(int i=0; i<off+len; i++)81 {82int ch = read();83if(ch==-1)84break;85count++;86buf[i] = (char)ch;87 }88return count;89 }},服务器空间,香港服务器,美国服务器即使是不成熟的尝试,也胜于胎死腹中的策略。

javase_13(字符流)

相关文章:

你感兴趣的文章:

标签云: