黑马程序员技术交流社区

标题: 如何使用字节流在程序控制台中输出中文 [打印本页]

作者: 齐国峰    时间: 2011-11-4 09:55
标题: 如何使用字节流在程序控制台中输出中文
本帖最后由 齐国峰 于 2011-11-4 10:00 编辑

如何使用字节流在程序控制台中输出中文,不转化的话是乱码...
        public static void main(String[] args) throws FileNotFoundException, IOException {
                InputStream in = new FileInputStream("test.txt");
                int b;
                while ((b = in.read()) != -1){       
                                System.out.print((char)b);
                }
                in.close();
        }
作者: byronsong    时间: 2011-11-4 13:45
手动解码
public static void main(String[] args) throws FileNotFoundException, IOException {
                InputStream in = new FileInputStream("test.txt");
                byte [] buf=new byte[1024];
                int len=0;
                while ((len = in.read()) != -1){   
     
                                System.out.print(new String(buf,0,len,"GBK"));//用GBK来解码,或者可以改成"utf-8"就是UTF-8的解码方式,按自己的需求来。
                }
                in.close();
        }
作者: byronsong    时间: 2011-11-7 15:24
本帖最后由 byronsong 于 2011-11-7 15:29 编辑
贺行之 发表于 2011-11-4 14:02
这种方法效率很高,但是同时有个问题,创建的数组长度是1024,一个汉字的大小是2个字节,要是这个数组的 ...


开始理解错你的问题了。这个还得再考虑一下,目前我还没有碰上这个问题。
作者: 周敏2011nc    时间: 2011-11-7 22:51
这里可用in.read(byte[] b)方法。
代码如下:
import java.io.FileInputStream;
import java.io.InputStream;

public class codingTest {
        public static void main(String[] args) throws Exception{
             InputStream in = new FileInputStream("outputStream.txt");
             int len = -1;
             byte[] b = new byte[1024];
             while((len = in.read(b)) != -1){
                 System.out.println(new String(b,0,len));
             }               
     }
}
作者: 葛雨龙    时间: 2011-11-7 22:56
转换流来操作




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2