A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 齐国峰 黑马帝   /  2011-11-4 09:55  /  1914 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 齐国峰 于 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();
        }

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

正序浏览
转换流来操作
回复 使用道具 举报
这里可用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));
             }               
     }
}
回复 使用道具 举报
本帖最后由 byronsong 于 2011-11-7 15:29 编辑
贺行之 发表于 2011-11-4 14:02
这种方法效率很高,但是同时有个问题,创建的数组长度是1024,一个汉字的大小是2个字节,要是这个数组的 ...


开始理解错你的问题了。这个还得再考虑一下,目前我还没有碰上这个问题。
回复 使用道具 举报
手动解码
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();
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马