问题描述: 将A文件需要copy到B文件,A文件的编码是"euc-jp",B文件的编码是"shift_jis",注意A、B文件都是文本文件。请问用java怎么做?还有怎样生成指定编码的文本文件,也用java实现?请详细说明,因为我写了一个, 但是运行有乱码出现。

解决方案 »

  1.   

    占据有利地形--沙发
    呵呵舒舒服服地帮"autojoke()"顶一下
      

  2.   

    用BufferedReader和BufferedWriter来读写文件
    读写的时候加上编码
      

  3.   

    乱麻不一定是转码的问题,也可能是显示时使用的编码和字符串编码不同
    还有,草率什么意思,不懂   public static ArrayList read() {
            InputStreamReader fr = null;
            ArrayList list = new ArrayList();
            try {
                fr = new InputStreamReader(new FileInputStream("e:\\a.txt"),
                                           "UTF-8");
                BufferedReader br = new BufferedReader(fr);
                String line = null;
                while ((line = br.readLine()) != null) {
                    list.add(line);
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (fr != null) {
                    try {
                        fr.close();
                    } catch (IOException ex1) {
                    }
                }
            }
            return list;
        }    public static void write(ArrayList list) {
            FileOutputStream fw=null;
            try {
                fw = new FileOutputStream("e:\\b.txt");
                OutputStreamWriter ow=new OutputStreamWriter(fw,"UTF-16");
                BufferedWriter bw = new BufferedWriter(ow);
                for (int i = 0; i < list.size(); i++) {
                    String line = (String) list.get(i);
                    bw.write(line);
                    bw.newLine();
                }
                bw.flush();
            } catch (Exception ex1) {
                ex1.printStackTrace();
            } finally {
                if (fw != null) {
                    try {
                        fw.close();
                    } catch (IOException ex) {
                    }
                }
            }
        }    public static void main(String args[]) {
            write(read());
        }