InputStreamReader类:是字节流与字符流的桥梁,它读取字节并为其解码为使用指定的字符编码的字符集的字符。
OutStreamWritetr 类:是字符流到字节流的桥梁,它读取字符并为其解码为字节。
构造方法:
InputStreamReader:
public InputStreamReader(InputStream in) 这将创建一个使用默认字符集的输入流。 |
public InputStreamReader(InputStream in, String charsetName) 这将创建一个使用指定的字符集的输入流。 |
public InputStreamReader(InputStream in, Charset cs) 这将创建一个使用Charset类字符编码对象的输入流。 |
public InputStreamReader(InputStream in, CharsetDecoder dec) 这将创建一个字符集的输入流,传入CharsetDecoder对象自动识别字符集 |
备注: nio包 关于 Charset 、关于CharsetDecoder
OutStreamWriter:
public OutputStreamWriter(OutputStream out, String charsetName) 这将创建一个使用指定的字符集的输出流。 |
public OutputStreamWriter(OutputStream out) 这将创建一个使用默认字符集的输出流。 |
public OutputStreamWriter(OutputStream out, Charset cs) 这将创建一个使用Charset类字符编码对象的输出流 |
public OutputStreamWriter(OutputStream out, CharsetEncoder enc) 这将创建一个字符集的输出流,传入CharsetDecoder对象自动识别字符集 |
InputStreamReader类方法:
public String getEncoding() 此方法返回正在使用此流的字符编码的名称。 |
public int read() 此方法读取单个字符。 |
public int read(char cbuf[], int offset, int length) 此方法读取字符到一个数组中的一部分。 |
public boolean ready() 此方法通知此流是否已准备好被读取。 |
public void close() 此方法关闭流。 |
OutStreamWriter:
public String getEncoding() 此方法返回正在使用此流的字符编码的名称。 |
void flushBuffer() 将输出缓冲区刷新到基础字节流,而不刷新。 |
public void write(int c) 此方法写单个字符。 |
public void write(char cbuf[], int off, int len) 此方法写一个数组中的一部分。 |
public void write(String str, int off, int len) 此方法写一个字符串中的一部分。 |
public void flush() 清空缓冲区 |
public void close() 关闭流 |
Copy:
InputStreamReader isr = new InputStreamReader(new FileInputStream("C:\\Users\\Mr.wang\\Desktop\\单词\\AccessTest\\Access.txt"));
OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("C:\\Users\\Mr.wang\\Desktop\\单词\\AccessTest\\Access1.txt"));
int num = 0;
/*int a ;
while((a=isr.read()) != -1) {
osr.write(a);
num++;
}*/
System.out.println(isr.getEncoding());
char[] cbuf= new char[1024*20];
while((isr.read(cbuf)) != -1) {
osr.write(cbuf);
num++;
}
osr.close();
isr.close();
System.out.println("循环次数" + num);