Java IO 读取/写入文件 中文乱码困难解决代码

读取: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(File file) "UTF-8"));

  写入: BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(File file) "UTF-8"));

  不包BufferedWriter和BufferedReader一层也可以达到解决中文乱码困难目.

  办法下面J2SE6中关于 InputStreamReader 和 OutputStreamWriter 缘故

  *************************************************************

  public class OutputStreamWriterextends Writer

  OutputStreamWriter 字符流通向字节流桥梁:可解决指定 charset 将要写入流中字符编码成字节它解决字符集可以由名称指定或显式给定否则将接受平台默认字符集

  每次调用 write() 办法都会导致给定字符(或字符集)上涨用编码转换器写入底层输出流之前得到这些字节将缓冲区中累积可以指定此缓冲区大小不过默认缓冲区对多数用途来说已足够大注意传递给 write() 办法字符没缓冲

  为了获得最高效率可考虑将 OutputStreamWriter 包装到 BufferedWriter 中以避免频繁调用转换器例如:

  Writer out

  = new BufferedWriter(new OutputStreamWriter(System.out));

  代理对 一个字符它由两个 char 值序列表示:高 代理项范围为 '\uD800' 到 '\uDBFF'后跟范围为 '\u数码相机00' 到 '\uDFFF' 低 代理项

  错误代理元素 指后面不跟低代理项高代理项或前面没高代理项低代理项

  此类总解决字符集默认替代序列 替代错误代理元素和不可映射字符序列如果需要更多地控制编码过程则应该解决 CharsetEncoder 类

  *******************************************************************

  public class InputStreamReaderextends Reader

  InputStreamReader 字节流通向字符流桥梁:它解决指定 charset 读取字节并将其解码为字符它解决字符集可以由名称指定或显式给定或者可以接受平台默认字符集

  每次调用 InputStreamReader 中一个 read() 办法都会导致从底层输入流读取一个或多个字节要启用从字节到字符效转换可以提前从底层流读取更多字节使其超过满足当前读取操作所需字节

  为了达到最高效率可要考虑 BufferedReader 内包装 InputStreamReader例如:

  BufferedReader in

  = new BufferedReader(new InputStreamReader(System.in));

你可能感兴趣的:(基础)