老师,咨询一下这里的代码

老师,咨询一下这里的代码

(){
    Reader reader={
        File file = File()reader=FileReader(file)ch=( (ch=reader.read()) != -){
            System..println(()ch)}
    }(IOException e){
        e.printStackTrace()}{
        (reader != ){
            {
                reader.close()}(IOException e){
                e.printStackTrace()}
        }
    }
}

老师,关于以下代码

( (ch=reader.read()) != -){
    System..println(()ch)}

请问一下,如果我的文本文件内容是中文应该怎么输出呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小蓝 2022-11-25 09:55:39

同学你好,同学提供的代码格式错乱,老师这里无法对代码进行格式化。请同学提供所有类的代码,并且按照以下方式以Java的格式提供,这样老师可以完整的复制同学的代码,确保不会出现偏差。

https://img1.sycdn.imooc.com//climg/638020890933f93108450469.jpg

通常情况下,使用字符流对象操作中文文本是可以的。但是特殊的,如果文件本身的编码字符集,与Java代码的编码字符集,或者与操作系统的编码字符集不同时,依然可能会出现乱码,所以需要使用InputStreamReader进行读取,使用OutputStreamWriter进行写出,因为这两个类的构造方法中,第二个参数可以指定编码字符集格式,可以将读入与写出进行统一,避免乱码的出现。

祝学习愉快~


只能卷了 2022-11-25 01:46:21

方法一:去获取字节流,在获取字节流后,将字节存入byte数组,然后将byte数组传入,然后放入new String(byte数组,charset),然后打印这个string

方法二: 使用BufferedReader,在输出的地方用 readLine 直接读取一行,这样就不是一个一个的去读取。utf-8中汉字是占3bytes所以一个一个读不行。

方法三:用ByteArrayInputStream 写法类似FileInputStream。 然后把数组通过String打印出来。

过程注意保持字符集一致。

我不是老师...

如果有错老师请指出。

  • 忘记了还有InputStreamReader,可以转换字节流为字符流。课程里的源码就可以正常读取文件的中文。

    2022-11-25 07:55:57
  • 我更正一下,这里和汉字在UTF-8占3bytes无关。只要用了字节流,英文汉字还是什么其他语言都可以正常处理。只是需要保证写入时的字符集和读取时将字节流转换为字符流使用的字符集是一致的,就不会乱码。

    2022-11-25 11:56:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师