黑马程序员技术交流社区

标题: IO字节流 [打印本页]

作者: 花园农场    时间: 2014-6-9 15:28
标题: IO字节流
class FileStream1
{
        public static void main(String[] args)throws IOException
        {
                readFile_2();
        }
        public static void readFile_2()throws IOException
        {
                FileInputStream fis=new FileInputStream("fos.txt");
                byte[] buf=new byte[1024];
                int len=0;
                while((len=fis.read(buf))!=-1)
                {
                        System.out.println(new String(buf,0,len));
                }
                fis.close();
        }
        public static void writeFile()throws IOException
        {
                FileOutputStream fos=new FileOutputStream("fos.txt");
                fos.write("abcde".getBytes());
                fos.close();
        }
}
这个程序中System.out.println(new String(buf,0,len));什么意思?
作者: 496080891    时间: 2014-6-10 15:05
将输入流中从第0位开始,最多 len 个数据字节读入 byte 数组。
作者: 郝九凤    时间: 2014-6-18 11:49
len是这个数组里面的有效字节数len不一定等于buf.length,再把数组中从零角标开始到len角标的字节数据转成字符串。
作者: 十指紧扣    时间: 2014-6-18 12:54
看不懂表示。。。。

作者: 十指紧扣    时间: 2014-6-18 12:59
呃呃呃的顶顶顶顶顶顶顶顶顶顶
作者: 空心祭    时间: 2014-6-21 20:56
本帖最后由 空心祭 于 2014-6-21 20:59 编辑

String是java里面很强大的一个类 , 而且很多东西转化为字符串方便与操作  String s = new String(buf,0,len); 是通过String类的构造方法将一个buf这个数组中从0角标开始的len个元素转化为一个字符串,而  new String(buf,0,len) 是匿名对象的使用 对于仅用一次的对象来说 用匿名对象比较方便 而且匿名对象可以作为参数进行传递
作者: EarlyHeart    时间: 2014-7-2 06:03
System.out.println(new String(buf,0,len));
单看这句代码的意思就是:
1.从buf[0]开始的len个元素所组成的的数组。
2.1所组成的数组所表示的编码(平台默认编码)所对应的字符串。并将这个字符串构造出来。
3.将这个字符串打印出来。

结合这个代码就是:
byte[] buf=new byte[1024];//构造一个1024个元素(字节)的byte数组,用以存放每次读出的数据
   int len=0;//定义一个变量用以保存每次读出的数据的字节数
    while((len=fis.read(buf))!=-1)//重复读取数据,直到读完,并把每次读到的数据存放在buf中(装满),读取的 //字节数保存在len中
    {
          System.out.println(new String(buf,0,len));//前几次读到的数据因为读满了整个数组所以都是(buf,0,1024)(也就是buf本身了),但是最后一次读取不一定能读满1024个字节,这是len所记录的字节数就起到它的作用了,buf,0,len就能准确的把有效字节找出来,而不会把上一轮循环读到的后1024-len位数据读到。所以这里用String类的这个构造方法而不用new String(buf)就是这个用意。
     }







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