/*
产生的问题,利用FileInputStream.read(),输出的时候,会输出一些不明身份的小方格,百思不得其解
问题的原因:
在byte->String的过程中,是将全部的byte数组转换成了String,但是不是每个部分的byte都是取满的,
所以在输出的时候,才会有这种问题的产生
问题的根源:没有理解read(),这个返回的是获取的字节总数Int
*/
//有问题的输出
public class Test1 {
public static void main(String[] args) throws IOException {
File f=new File("test.txt");
InputStream iis = new FileInputStream(f);
byte[] buf = new byte[1024];//该长度通常都是1024的整数倍。
while(iis.read(buf, 0, buf.length)!=-1){//这里是每次读进来这么buf.length个字节到buf中去
//通过new一个String(new byte[])输出到控制台上去->这里输出是将整个byte[]中的东西输出
//所以才会多输出了一些没有获取的内容的
System.out.println(new String(buf));
}
}
}
//订正之后
public class Test1 {
public static void main(String[] args) throws IOException {
File f=new File("test.txt");
InputStream iis = new FileInputStream(f);
byte[] buf = new byte[1024];
int len = 0;//定义一个表示用于接收文本的字节数
while((len=iis.read(buf))!=-1)
{
//使用这个new String(byte[],off,len)->指定输出一定数量的byte转成String
System.out.println(new String(buf,0,len));
}
}
}