java更改文件字符集编码

/* *
     * @Author adolph
     * @Description 更改文件的字符集编码
     * @Date 9:19 2020/5/26
     * @Param [file,contentType]
     * @return java.io.File
    **/
    public File changedContentType(File file,String contentType) throws IOException{
        //获取已获取的字符输入流
        FileInputStream fis = new FileInputStream(file);
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        String str = null;
        // 创建StringBuffer字符串缓存区
        StringBuffer sb = new StringBuffer();
        // 通过readLine()方法遍历读取文件
        while ((str = br.readLine()) != null) {
            // 使用readLine()方法无法进行换行,需要手动在原本输出的字符串后面加"\n"或"\r"
            str += "\n";
            sb.append(str);
        }
        String fileSource = sb.toString();
        // 以GBK格式写入文件,file.getAbsolutePath()即该文件的绝对路径,false代表不追加直接覆盖,true代表追加文件
        FileOutputStream fos = new FileOutputStream(file.getAbsolutePath(), false);
        OutputStreamWriter osw = new OutputStreamWriter(fos, contentType);
        try{
            osw.write(fileSource);
            return file;
        }catch(Exception e){
            e.printStackTrace();
            return null;
        }finally {
            osw.flush();
            osw.close();
            fos.close();
            br.close();
            isr.close();
            fis.close();
        }
    }

 

posted @ 2020-05-27 16:20  故城归人  阅读(1082)  评论(0编辑  收藏  举报