IO流实现GBK写入文件然后转换UTF-8
public static void main(String[] args) throws IOException {
File file = new File("olol\\a.txt");//创建要写入的文件路径文件不存在IO流会自动创建,也可以直接创建
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file), "GBK");//创建流使用GBK写入数据
osw.write("窗前明月光,");
osw.write("\r\n疑是地上霜.");
osw.write("\r\n举头望明月,");
osw.write("\r\n低头思故乡.");
osw.flush();
osw.close();
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");//创建转换流进行读取使用GBk进行读取
int temp = 0;//记录
char[] c = new char[600];//采用数组进行保存,数组容量要大一点,优化可以采用集合存然后写入的时候遍历进行循环写入
while ((temp = isr.read(c)) != -1) {//一次读取一个数组
System.out.print(new String( c) );//用于查看控制台的数据
}
OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("olol\\a.txt"), "UTF-8");//创建转换流使用utf进行写入在原来的文件上进行操作
osw2.write(c);//采用直接写入数组
osw2.flush();
osw2.close();
isr.close();
}
问题;
不能同时读取和写入否则会把原来的数据进行覆盖写入空数据,必须先进行读取数据保存到容器中然后,在进行写入。