Reader
- BufferedReader
缓冲区字符输入流
- LineNumberReader
提供了行号的具体的装饰器类
- LineNumberReader
- CharArrayReader
字符数组输入流
- StringReader
字符串输入流
(本质是字符串) - InputStreamReader
是字节转换为字符的桥梁,用于转换,它使指定的charset读取字节并将其解码为字符
- FileReader
FileReader流是用于读取字符文件的便捷类。
(FileReader类从InputStreamReader类继承而来)
- FileReader
- PipedReader
管道输入流
- FilterReader
是个用于过滤读取字符流的抽象类
- PushbackReader
一个允许字符被推回到流中的字符流读取器
- PushbackReader
Writer
- BufferedWriter
缓冲区字符输出流
- CharArrayWriter
字符数组输出流
- StringWriter
字符串输出流
- OutputStreamWriter
是字节转换为字符的桥梁,用于转换,它使指定的charset读取字节并将其解码为字符
- FileWriter
- PipedWriter
管道输出流
- FilterWriter
过滤流
InputStreamReader
构造方法
- InputStreamReader(InputStream in)
创建一个使用默认字符集的InputStreamReader。
- InputStreamReader(InputStream in, Charset cs)
创建一个使用给定字符集的InputStreamReader。
- InputStreamReader(InputStream in, CharsetDecoder dec)
创建一个使用给定字符集解码器的InputStreamReader。
- InputStreamReader(InputStream in, String charsetName)
创建一个使用命名字符集的InputStreamReader。
常用方法
- close()
关闭流并释放与之相关联的任何系统资源。
- getEncoding()
返回此流使用的字符编码的名称。
- read()
读一个字符
- read(char[] cbuf, int offset, int length)
将字符读入数组的一部分。
- ready()
告诉这个流是否准备好被读取。
OutputStreamWriter
构造方法
- OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。
- OutputStreamWriter(OutputStream out, Charset cs)
创建一个使用给定字符集的OutputStreamWriter。
- OutputStreamWriter(OutputStream out, CharsetEncoder enc)
创建一个使用给定字符集编码器的OutputStreamWriter。
- OutputStreamWriter(OutputStream out, String charsetName)
创建一个使用命名字符集的OutputStreamWriter。
常用方法
- getEncoding()
返回此流使用的字符编码的名称。
- write(int c)
写一个字符
- write(String str, int off, int len)
写一个字符串的一部分。
- write(char[] cbuf, int off, int len)
写入字符数组的一部分。
- flush()
刷新流。
- close()
关闭流,先刷新。
示例:
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("jachie.txt");
InputStreamReader isr = new InputStreamReader(fis);
FileOutputStream fos = new FileOutputStream("jachie1.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
int n = 0;
char[] cbuf = new char[20];
// 读数据到字符数组里
while((n = isr.read(cbuf)) != -1) {
// 转字符串输出
String s = new String(cbuf, 0, n);
System.out.print(s);
// 写入
osw.write(cbuf, 0, n);
// 刷新流
osw.flush();
}
fis.close();
isr.close();
fos.close();
osw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedReader
构造方法
- BufferedReader(Reader in)
创建使用默认大小的输入缓冲区的缓冲字符输入流。
- BufferedReader(Reader in, int sz)
创建使用指定大小的输入缓冲区的缓冲字符输入流。
常用方法
- close()
关闭流并释放与之相关联的任何系统资源。
- read()
读一个字符
- read(char[] cbuf, int off, int len)
将字符读入数组的一部分。
- readLine()
读一行文字。\r或者\n则为一行
- ready()
告诉这个流是否准备好被读取。
BufferedReader
构造方法
- BufferedWriter(Writer out)
创建使用默认大小的输出缓冲区的缓冲字符输出流。
- BufferedWriter(Writer out, int sz)
创建一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
常用方法
- close()
关闭流,先刷新。
- flush()
刷新流。
- newLine()
写一行行分隔符。
- write(char[] cbuf, int off, int len)
写入字符数组的一部分。
- write(int c)
写一个字符
- write(String s, int off, int len)
写一个字符串的一部分。
示例:
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("jachie.txt");
InputStreamReader isr = new InputStreamReader(fis);
FileOutputStream fos = new FileOutputStream("jachie1.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(osw);
int n = 0;
char[] cbuf = new char[20];
while((n = br.read(cbuf)) != -1) {
bw.write(cbuf, 0, n);
bw.flush();
}
fis.close();
isr.close();
fos.close();
osw.close();
br.close();
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}