日期:2014-05-20  浏览次数:20859 次

?请问打印在屏幕上和文件中为什么结果不同呢
且看下面的代码,打印在屏幕上中文无法显示很正常,但是为什么打印到文件中就正常了呢?
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是把整个字节写入流中,然后打印