为了账号安全,请及时绑定邮箱和手机立即绑定

求教,为什么我的只输出了文档中的第一个字?

我的代码只输出了文档中的第一个字。

返回的c值不是读不是读到字符的个数吗,强制转换为char类型后就能输出文档的内容了???

另外,批量读取的时候是可以全部读取文档内容的。麻烦帮忙解答一下,十分感谢!

public static void main(String[] args) throws IOException {

// TODO 自动生成的方法存根

String file="E:\\javaio\\imooc.txt";

InputStreamReader isr=new InputStreamReader(new FileInputStream(file));

int c;

if((c=isr.read())!=-1){

System.out.println((char)c);//强制类型转换为char

}

}


}

取的字符的个数吗,为甚么强制转换之后会输出文档的内容?

正在回答

4 回答

c是用作判断是否输出文本末尾的,并不是txt本身文本内容,你可采取其他方式获取文档中第一个字,PS:并且你取的是第一个字符,不是第一个字(汉字2字节)。

0 回复 有任何疑惑可以回复我~
#1

鲜衣 提问者

文档内几行字,为什么只输出了第一个呢?而视频演示当中是把全部内容都输出到控制台了。 为甚么批量输出的时候需要转换为String类型?如下 char[] buf=new char[8*1024]; while((c=isr.read(buf,0,buf.length))!=-1){ String s=new String(buf,0,c); System.out.println(s); 新手求教,问得好没水平@-@,~~~~(>_<)~~~~
2015-07-31 回复 有任何疑惑可以回复我~
#2

伏地炸毛 回复 鲜衣 提问者

是这样 文档中的内容是String类型,即字符串类型的,所以批量输出就是输出的字符串类型。 四段代码的意思: 1、定义一个字符数组, 2、把int c的数值改为isr.read(buf,0,buf.length),也就是说按照字符数组大小去读取txt文件中的内容,不是文章末尾,即不等于-1就一直读一直读,直到等于-1时,证明文件读完了,这时将整个txt的字符数量赋予c, 3、定义一个字符串,长度为c长度,此处的c才有数值,并且是文档中字符的长度,并不是文章字数(注意),并且是否包含系统默认的开始字符结束字符不确定(注意), 4、输出该字符串。
2015-07-31 回复 有任何疑惑可以回复我~

注意:c=isr.read()读取的是单个字符,同时返回的是字符,如果已到达流的末尾,则返回 -1。

0 回复 有任何疑惑可以回复我~

read方法本来就是读取内容,只是没内容可以输出的时候返回-1

0 回复 有任何疑惑可以回复我~

求教,为什么我的只输出了文档中的第一个字?

这个是因为,你没有用循环,只有一个if

0 回复 有任何疑惑可以回复我~
#1

鲜衣 提问者

视频中也没有if啊!!
2015-07-31 回复 有任何疑惑可以回复我~
#2

化龙贝 回复 鲜衣 提问者

if((c=isr.read())!=-1){ System.out.println((char)c);//强制类型转换为char } 这里呐,只读了一次喽
2015-07-31 回复 有任何疑惑可以回复我~
#3

鲜衣 提问者 回复 化龙贝

对不起喽,是我看错啦!不知道你回答了,我刚去看才发现。非常谢谢!
2015-08-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求教,为什么我的只输出了文档中的第一个字?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信