/* * * @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()方法无法进行换行,需要手动在原本输出的字符串后面加" "或" " str += " "; 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(); } }