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

请大家帮我看看这个的输出为啥多了几个问号

请大家帮我看看这个的输出为啥多了几个问号

丶归途 2016-08-13 20:52:31
package about_IO;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class Bite { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub File file=new File("D:\\io.txt\\IO.txt"); System.out.println(file.exists()); try{ FileInputStream file1=new FileInputStream(file); int a=0; while((a=file1.read())!=-1){ System.out.print((char)a); } file1.close(); }catch(FileNotFoundException e){ System.out.println("文件不存在"); } catch(IOException e){ System.out.println("发生IO异常"); } }}这个是原来的代码。输出是这样的:true???abcde文件内只有abcde几个字母,希望各位大神解答一下。
查看完整描述

5 回答

?
慕标2337738

TA贡献23条经验 获得超13个赞

因为读的时候只能一个一个字节的读,如果包含两个或者两个以上就会出现乱码。加缓存,或者用reader读,就好了。

 

 

查看完整回答
1 反对 回复 2016-08-13
  • 丶归途
    丶归途
    额......不是说JAVA中字母只占一个字节吗?read也是只取出一个字节,然后输出。 这里的问题主要是后面的字母已经正常输出了,只是在前面的输出多出来了几个问号。想明白那些问号是怎么出现的。 新上手学的这个,有点搞迷糊了,如果言辞有啥不对的地方,还请见谅啊。
  • 慕标2337738
    慕标2337738
    前面的问号就是里面的其他字符,空格、中文等。 你把FileInputStream file1=new FileInputStream(file);换成 FileReader file1= new FileReader(file);试下。input和output都没有解码的功能。
?
千湖之梦

TA贡献10条经验 获得超7个赞

编码问题

查看完整回答
反对 回复 2016-08-13
?
丶归途

TA贡献3条经验 获得超3个赞

主要就是想问一下,后面明明已经正常输出了,为啥前面还会有几个问号,明明文件里面没有其他数据了。

查看完整回答
反对 回复 2016-08-13
  • 5 回答
  • 0 关注
  • 2283 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信