JAVA本地读取文件,解决中文乱码问题

out=new FileOutputStream(fi);//建立文件字节输出流

ou=new OutputStreamWriter(out);//字节流字符流转化的桥梁

write= new BufferedWriter(ou);//缓冲读取字符 将字节流封装成BufferedReader对象

reader = new BufferedReader(inp);//以字符流方式读入

char a[]=new char[21];

byte b[]=new byte[21];

FileReader filer=new FileReader(file);

FileWriter filer1=new FileWriter(fi);

/* 中文不会乱码*/

reader.read(a);

write.write(a);

/* 中文不会乱码*/

/*inp.read(a);

ou.write(a);*/

//中文不会乱码

/*input.read(b);

out.write(b);*/

//input.read(b);//放入字节数组

//字节数组的read方法的源码,下面可知input.read(b)不会导致数组越界,就是担心文件内容放不了进入数组的情况,因为这个read方法本身

//数组放入多少是已经固定的,并非将文件内容一下子全部放入,所以不会有越界情况

/*public int read(byte b[]) throws IOException {

return read(b, 0, b.length);

}*/

for(int i=0;i<21;i++) {

//System.out.println(b[i]);//48---57

System.out.println(a[i]);//这里不懂,BufferedReader中的参数换inp后前面的部分字符没有输出

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

inp.close();

ou.close();

input.close();

out.close();

//reader.close();

//write.close();//这里把输出流关闭也会和write.flush()一样的效果,有点类似数据库的事务提交

}

}

}