当前位置: 代码迷 >> J2SE >> 问一个比较弱的有关问题
  详细解决方案

问一个比较弱的有关问题

热度:1767   发布时间:2013-02-25 00:00:00.0
问一个比较弱的问题
一直以来学习中从来没有操作过中文文件,今天有个事必须要从一个文件中读取中文字符然后输出,才发现束手无策,求助下各位大侠。

先贴下我的范例代码

Java code
public static void main(String args[])    {        byte buffer[] = new byte[2056];        try        {            FileInputStream fileint = new FileInputStream("dchs.txt");            int bytes = fileint.read(buffer,0,2056);            String str = new String(buffer,0,0,bytes);            System.out.print(str);        }//try        catch(Exception e)        {            String err = e.toString();            System.out.println(err);        }//cathch    }//public static void main(String args[])


我用 FileInputStream 这么操作 输出的中文总是乱码,英文字符正常。

各位大侠给指教下。

------解决方案--------------------------------------------------------
FileInputStream 是字节流,要想操作中文,用FileReader,或将FileInputStream 用InputStreamReader包装,再用BufferedReader缓冲一下。

------解决方案--------------------------------------------------------
在你基础上面改的,不过还是建议使用FileReader类来读文本文件

下面的程序还跟文本文件的编码格式相关,你跑跑看看吧,读的文件名称 你自己改下就好
Java code
public class ReadFileDemo {    public static void main(String args[])    {        byte buffer[] = new byte[2056];        try        {            FileInputStream fileint = new FileInputStream("易中天拼三国.txt");            int i=0;            while(fileint.read(buffer)!=-1){                String str=new String(buffer);                System.out.println(str);            }        }//try        catch(Exception e)        {            e.printStackTrace();            String err = e.toString();            System.out.println(err);        }//cathch    }}
------解决方案--------------------------------------------------------
这个好说 用FileReader。 FileReader 专门用来读取一些纯文本的。 FileInputstream 最底层的一个字节一个字节的读,适合读媒体文件比如图片视频
------解决方案--------------------------------------------------------
非要用FileInputStream读 可以用转换流 InputStreamReader 封起来 在用个BufferedReader封起来就好多了
------解决方案--------------------------------------------------------
用FileReader。 FileReader 专门用来读取一些纯文本的。 FileInputstream 最底层的一个字节一个字节的读,适合读媒体文件比如图片视频

------解决方案--------------------------------------------------------
我用下面的方法试了下能读中文。
Java code
File file=new File("C:\\dchs.txt");        char[] ch=new char[(int)file.length()];        int len=0;        FileReader fr;        try {            fr = new FileReader(file);            len=fr.read(ch);            System.out.println(new String(ch,0,len));        } catch (FileNotFoundException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        } catch (IOException ex) {            // TODO Auto-generated catch block            ex.printStackTrace();        }
------解决方案--------------------------------------------------------
探讨
FileInputStream 是字节流,要想操作中文,用FileReader,或将FileInputStream 用InputStreamReader包装,再用BufferedReader缓冲一下。
  相关解决方案