java以指定编码(utf-8,gbk等)读写文件

程序中经常会遇到中文乱码的问题,发现是读写文件的时候没有指定编码(utf-8,gbk等)。

在java中可以通过如下方式来指定编码读写文件:

 /**
     * 按指定编码读文件
     * 
     * @param fileName
     * @param encode
     */
    private static void readFile(String fileName, String encode) {
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), encode));
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }
    }

    /**
     * 按指定编码写文件
     * 
     * @param content
     */
    private static void writeFile(String name, String content, String encode) {
        try {
            File f = new File(name);
            if (f.exists()) {
                System.out.println("file " + f.getAbsolutePath() + " already exist, delete it first");
                f.delete();
            }
            if (!f.createNewFile()) {
                System.out.println("file " + f.getAbsolutePath() + " create failed");
                return;
            }

            Writer output = new OutputStreamWriter(new FileOutputStream(f), encode);
            output.write(content);
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

发表评论

电子邮件地址不会被公开。 必填项已用*标注