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

来源:5-1 字节字符转换流

鲜衣

2015-07-31 14:21

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

返回的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回答

  • 伏地炸毛
    2015-07-31 14:39:49
    已采纳

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

    伏地炸毛 回复鲜衣

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

    2015-07-31 15:29:21

    共 2 条回复 >

  • 慕粉3170877
    2016-07-15 19:08:18

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

  • 没有马甲线的安琪拉
    2015-07-31 14:37:40

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

  • 化龙贝
    2015-07-31 14:33:50

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

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

    鲜衣 回复化龙贝

    对不起喽,是我看错啦!不知道你回答了,我刚去看才发现。非常谢谢!

    2015-08-01 00:47:36

    共 3 条回复 >

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题