永发信息网

java 字节输入流结尾处一定要加 -1

答案:2  悬赏:20  手机版
解决时间 2021-03-19 03:22
  • 提问者网友:謫仙
  • 2021-03-18 22:55
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();
}
代码如上,我的问题是int len在此有什么意义?它的值是不是每次都被buf[] 的下一位赋给了? 另外此处的打印是在一次一byte打印吗?如果是,那为什么又用一个new String(buf, 0, len)? new String 的定义方法括号里面的数据类型要求是什么,为什么不用加引号?最后如果是这样打印,难道不应该打印出来每个字节后都有一个“0 ,len”吗?(我知道实际打印出来没有"0,len",但是还是不明白为什么)
最佳答案
  • 五星知识达人网友:行路难
  • 2021-03-19 00:26
首先buf这个字节数组在这里是充当内存中的缓冲区
read(buf)是从文件中读出1k数据存入这个缓冲区,方法返回实际读入的字节数
len是实际读入缓冲区的字节数(因为读到最后的时候,实际数据可能已经不足1k)
len==-1标识文件读完,没有数据了
new String(缓冲区,开始位置, 结束位置)把缓冲区中从开始位置到结束位置的字节转换为一个字符串
全部回答
  • 1楼网友:胯下狙击手
  • 2021-03-19 00:48
主要区别 实现上 字节输出流是继承outputstream 而字符输出流继承outputstreamwriter 应用上 字符流是专门用来处理文字的,包含了对多国语言的支持,而字节流主要是用来处理文字以外的如binary文件。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯