/* * * @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(); } }