黑马程序员技术交流社区

标题: 字符流中的 int read(char[] cbuf) 方法的困惑 [打印本页]

作者: 廖理    时间: 2012-5-7 21:28
标题: 字符流中的 int read(char[] cbuf) 方法的困惑
本帖最后由 廖理 于 2012-5-7 21:49 编辑

结果很让人郁闷 请详细说说方法的特点和操作原理(兄弟们 分析原理啊)

import java.io.*;
import java.util.*;
class ReaderDemo2{
        public static void main(String[] args)throws IOException{
        
                Reader r = new FileReader("asc,txt");
                        char[] i = new char[3];
                        int num = 0;
                        while((num = r.read(i)) != -1){
                                System.out.println(new String(i));
                        }
               
                        r.close();
                        
                        
               
        }
}
打印结果:
I  l
ove
yo
u!o

作者: 李震 李震 李震    时间: 2012-5-7 21:39
System.out.println(new String(i));  这里改成 new String(i,0,num);
  这样就可以了,char[] i = new char[1024];缓冲区最好设置大一点,一般设置为1024整数倍!

作者: 周四川    时间: 2012-5-7 21:47
import java.io.*;
import java.util.*;
class ReaderDemo2{
        public static void main(String[] args)throws IOException{
        
                Reader r = new FileReader("asc,txt");//这里应该把 , 换成 .  吧 //你这个asc.txt 应该存放的 I love you!
                        char[] i = new char[3];
                        int num = 0;
                        while((num = r.read(i)) != -1){ //这里每次读取到3个字符存到char数组中,然后进行一次循环
                                System.out.println(new String(i));//第一次读取到:I l (I, ,l)这三个字符 然后换行输出 //第二次 读取到(o,v,e)三个字符,然后换行输出(后面以此类推),你把System.out.println换成System.out.print应该是你想要的结果
                        }
               
                        r.close();
                        
                        
               
        }
}
打印结果:
I  l
ove
yo
u!o





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2