+ -
当前位置:首页 → 问答吧 → read()返回的到底是啥?是读取的那个字符的

read()返回的到底是啥?是读取的那个字符的

时间:2011-12-16

来源:互联网

public class Test {

public static void main(String[] args) throws IOException{
String filename = "D:" + File.separator+"hello.txt";
File f = new File(filename);
InputStream in = new FileInputStream(f);
byte[] b = new byte[1024];
int i= in.read(b);
System.out.println("读入的长度为:"+i);
System.out.println(new String(b,0,i));
}
}


大家看我这内容,为什么hello.txt里什么内容也不放,返回的长度i却等于3的?搞不明白?

作者: luhy5500   发布时间: 2011-12-16

直接查API文档就行了。

作者: walkman_22   发布时间: 2011-12-16

你的hello.txt中是不是有个空格空行啥的?
windows下一个空行是\r\n占两个字符,你的i却为3,难道还有个空格?
如果啥都没有。。那确实比较纠结

作者: wangfeiwoyun   发布时间: 2011-12-16

啥都没有,开始以为有的,按了次删除键了还是一样

作者: luhy5500   发布时间: 2011-12-16

哦,我明白了,你的hello.txt应该是以UTF-8格式保存的,UTF-8格式的文件,在文件头回有3个字节的BOM(Byte Order Mark),值为:EF BB BF
有可能是这个原因

作者: wangfeiwoyun   发布时间: 2011-12-16

引用 4 楼 wangfeiwoyun 的回复:

哦,我明白了,你的hello.txt应该是以UTF-8格式保存的,UTF-8格式的文件,在文件头回有3个字节的BOM(Byte Order Mark),值为:EF BB BF
有可能是这个原因


===

作者: Chianfirstli   发布时间: 2011-12-16