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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangyuyus 中级黑马   /  2013-11-12 13:59  /  1852 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;

public class Text8 {

        /**
         * 定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5)。
         *
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                read();
        }

        public static void read() throws Exception {

                FileInputStream fis = new FileInputStream(new File("exercise.txt"));
                int i = 5;
                byte[] by = new byte[i];
                while (fis.read(by, 0, i) != -1) {
                        System.out.print(new String(by));
                }
                fis.close();

        }

}
打印出的中文都是乱码,请问大家这样有什么方法处理么

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

3 个回复

倒序浏览
IO流有讲啊,有一个可以转换编码的,好像是 InputStreamReader 吧,指定编码形式就是了
你看看你那个 txt 是用什么编码存储的,照着读就是了
回复 使用道具 举报
hel 中级黑马 2013-11-12 15:17:40
藤椅
FileInputStream 是读取字节流的,你可以将FileInputStream 改为FileRearder,
或者:
FileInputStream fis = new FileInputStream(new File("exercise.txt"));

InputStreamReader in = new InputStreamReader(fis);
打印in
回复 使用道具 举报
你用的是IO字节流FileInputStream
可以用字符流来解决问题FileReader, FileWriter
但字符流在拷贝文本文件, 不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
只有像程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流,比如现在这个情况

当然如果你执意要用字节流的话,可以把
int i = 5;
byte[] by = new byte[i];
数组长度改成4或者2;不要用奇数这么奇葩的长度

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马