JAVA中GBK格式文件和UTF-8格式文件互相转换

之前由于忘记设置MyEclipse中文字格式,导致文件都是默认的GBK格式,由于后来的需求,需要把文件转化为UTF-8格式,为此我写了以下代码进行转换.这是大批量文件的转换,所以进行了文件遍历.
(谨记:一定要在确定好编码转换格式的情况下进行转换,最好做好备份,如果格式填写错误,容易造成文件的代码出现错误,造成无法弥补的损失.)
package com.zjx.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/*
 * 需求:请大家把自己一个文件目录的所有文件格式以UTF-8输出,然后以GBK写入。
 * 分析:
 * 		A:封装目录
 * 		B:遍历文件,获取该目录下的所有以.java结尾的文件
 * 		C.读取该文件,遍历至StringBuffer文件
 * 		D.写入文件	
 */
public class FilePathDemo {
	public static void main(String[] args) throws IOException {

		// 封装目录,需要修改文件格式的路径
		File srcFolder = new File("文件路径");

		// 递归功能实现
		getAllJavaFilePaths(srcFolder);
	}

	private static void getAllJavaFilePaths(File srcFolder) throws IOException {

		// 获取该目录下所有的文件或者文件夹的File数组
		File[] fileArray = srcFolder.listFiles();

		// 遍历该File数组,得到每一个File对象
		for (File file : fileArray) {

			// 继续判断是否以.java结尾,不是的话继续调用getAllJavaFilePaths()方法
			if (file.isDirectory()) {

				getAllJavaFilePaths(file);

			} else {

				if (file.getName().endsWith(".java")) {

					// 以GBK格式,读取文件
					FileInputStream fis = new FileInputStream(file);
					InputStreamReader isr = new InputStreamReader(fis, "GBK");
					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 str2 = sb.toString();

					// 以UTF-8格式写入文件,file.getAbsolutePath()即该文件的绝对路径,false代表不追加直接覆盖,true代表追加文件
					FileOutputStream fos = new FileOutputStream(file.getAbsolutePath(), false);
					OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
					osw.write(str2);
					osw.flush();
					osw.close();
					fos.close();
					br.close();
					isr.close();
					fis.close();
				}
			}
		}
	}
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值