黑马程序员技术交流社区
标题:
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