当前位置: 代码迷 >> J2SE >> ?请教打印在屏幕上和文件中为什么结果不同呢
  详细解决方案

?请教打印在屏幕上和文件中为什么结果不同呢

热度:10   发布时间:2016-04-24 01:16:33.0
?请问打印在屏幕上和文件中为什么结果不同呢
且看下面的代码,打印在屏幕上中文无法显示很正常,但是为什么打印到文件中就正常了呢?
Java code
import java.io.*;public class TestFileOutPutStream {    public static void main(String[] args) {        int b = 0;        FileInputStream in = null;        FileOutputStream out = null;        try {            in = new FileInputStream("j:/TestFileOutPutStream.java");            out = new FileOutputStream("j:/TestFileCopy.java");            while((b=in.read())!=-1) {                //out.write(b);                System.out.print((char)b);            }            in.close();            out.close();        } catch(FileNotFoundException e) {            System.out.println(" 找不到指定文件");            System.exit(-1);        } catch(IOException e1) {            System.out.println("文件复制错误");            System.exit(-1);        }        System.out.println("文件已复制");            }}  


------解决方案--------------------
这个问题我先告诉你一个方法:将System.out.print((char)b);
换成System.out.write(b);没问题了吧?
至于理由嘛,你先参考下API文档以及java类库的源码,如果还有困惑,我们再讨论吧。
------解决方案--------------------
这个其实还是编码问题。
------解决方案--------------------
探讨

引用:
这个问题我先告诉你一个方法:将System.out.print((char)b);
换成System.out.write(b);没问题了吧?
至于理由嘛,你先参考下API文档以及java类库的源码,如果还有困惑,我们再讨论吧。
求具体原因,为啥会这样。out.write(b);写到文件不是也是一个一个的字节写进去的吗,为什么就正常呢?
……

------解决方案--------------------
支持5楼
------解决方案--------------------
我感觉应该是System.out.print认为是一个字符就打印,而System.out.write是把整个字节写入流中,然后打印
  相关解决方案