/*
FileReader可以读取默认编码格式(UTF-8)的文件
读取系统默认编码(GBK中文)会产生乱码
*/
public class demo04FileReader {
public static void main(String[] args) throws IOException {
FileReader fr =new FileReader("D:\\IdeaProjects\\basic-code\\aaaa\\我是GBK.txt");
int len =0;
while ((len = fr.read())!=-1){
System.out.println((char) len);
}
fr.close();
}
}
OutputStreamWriter
/*
OutputStreamWriter 继承Writer
OutputStreamWriter:字符流通向字节流的桥梁,可使用指定的charset将要写入流中的字符编码成字节
共性成员方法:
writer(int c)写入单个字符
writer(char[] cbuf)写入字符数组
abstract void write(char[] cbuf.int off,int len)写入字符数组的某一部分
write(String str)写入字符串
write(String str,int off,int len)
void flush
void close
构造方法:
1、OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。
2、OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
参数:OutputStream out字节输出流,用来写转换之后的字节到文件中
String charsetName指定的编码表名称,不区分大小写,可以是utf-8/UTF-8/GBK ,不使用默认utf-8
使用步骤:
1、创建一个OutputStreamWriter对象
2、使用方法write,把字符转换为字节存储到缓冲区中
3、flush刷新到文件中
4、close
*/
public class demo05OutputStreamWriter {
public static void main(String[] args) throws IOException {
//write_utf_8();
write_gbk();
}
/*
使用转换流写UTF-8格式的文件
*/
private static void write_utf_8() throws IOException {
OutputStreamWriter opw = new OutputStreamWriter(new FileOutputStream("D:\\IdeaProjects\\basic-code\\aaaa\\utf-8.txt"),"utf-8");
opw.write("你好");
opw.flush();
opw.close();
}
private static void write_gbk() throws IOException {
OutputStreamWriter opw = new OutputStreamWriter(new FileOutputStream("D:\\IdeaProjects\\basic-code\\aaaa\\Gbk-8.txt"),"gbk");
opw.write("你好");
opw.flush();
opw.close();
}
}
InputStreamReader
/*
InputStreamReader 继承 Reader
继承的共性成员方法()
int read
int read(char[] cbuf)
void close
构造方法:
InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
使用步骤:
1、创建InputStreamReader对象
2、使用InputStreamReader对象的方法read
3、释放资源
注意事项:
1、构造方法中指定的编码表名称和文件的编码相同,否则会发生乱码
*/
public class demo06InputStreamReader {
public static void main(String[] args) throws IOException {
read_utf_8();
}
private static void read_utf_8() throws IOException {
InputStreamReader isr =new InputStreamReader(new FileInputStream("D:\\IdeaProjects\\basic-code\\aaaa\\utf-8.txt"),"utf-8");
int len =0;
while ((len= isr.read())!=-1){
System.out.println((char) len);
}
isr.close();
}
}