字符串的解码编码问题
getEncoding() 获取此流使用的字符编码的名称。(一般中文使用GBK编码 国际通用为UTF-8)
编码
* byte[] getBytes() 使用平台默认的字符集将该String编码为一系列字节,将结果存储到新的字节数组中
* byte[] getBytes(String charsetName) 使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中
解码
*String(byte[] bytes) 通过平台默认的字符集解码指定的字节数组来构造新的String
*String(byte[] bytes,String charsetName) 通过指定的字符集解码指定的字节数组来构造新的String
字符流输入流InputStreamReader 与 字符输出流 OutputStreamWriter的构造方法
* OutputStreamWriter(OutputStream out)
* OutputStreamWriter(OutputStream out,String charsetName)
字符流写数据的五种方式
* void write(int c) 写一个字符
* void write(char[] cbuf) 写入一个字符数组
* void write(char[]cbuf,int off,int len) 写入字符数组的一部分
* void write(String str) 写入一个字符串
* void write(String str,int off,int len) 写入一个字符串的一部分
字符流读数据的两种方式
* int read() 一次读一个字符数据
* int read(char[] cbuf) 一次读一个字符数组数据
转换流 用于读写文件的便携类
FileReader extends OutputStreamWriter 用于读取文件
FileWrite extends InputStreamReader 用于写入文件
字符流实例
实际上,字符流就是字节流与编码表的结合;字节流默认不使用缓冲区,字符流使用缓冲区。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Ooutputstreamwrite {
public static void main(String[] args) throws IOException {
OutputStreamWriter o= new OutputStreamWriter(new FileOutputStream("D:\\FILE\\a.txt"),"UTF-8");
/* 构造方法
* OutputStreamWriter(OutputStream out)
* OutputStreamWriter(OutputStream out,String charsetName) */
InputStreamReader i= new InputStreamReader(new FileInputStream("D:\\FILE\\java.txt"),"UTF-8");
char[] b=new char[100];
while(i.read(b)!=-1) {
o.write(b);
}
o.close();
i.close();
}
}
字符缓冲流 BufferedReader 与 BufferedWriter
回顾一下字节缓冲流,二者类似
BufferedReader 特有方法
public String readLine() 读一行文字,结构包括行的内容的字符串,不包括任何的行终止符,如果到达流的结尾,则返回null
BufferedWriter 特有方法
void newLine() 写一行行分隔符,行分隔符字符串由系统属性定义