版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38225558/article/details/82527035
InputStreamReader:字节输入流转字符输入流
第一步: 创建InputStreamReader对象,构造方法中传入一个InputStream字节输入流
构造方法摘要 InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。InputStreamReader(InputStream in, Charset cs)
创建使用给定字符集的 InputStreamReader。InputStreamReader(InputStream in, CharsetDecoder dec)
创建使用给定字符集解码器的 InputStreamReader。InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
第二步:读
int
read()
读取单个字符。int
read(char[] cbuf, int offset, int length)
将字符读入数组中的某一部分。
第三步:关闭流
void
close()
关闭该流并释放与之关联的所有资源。
OutputStreamWriter:字符输出流转字节输出流
第一步:创建OutputStreamWriter对象,构造方法中传入一个OutputStream字节输出流
构造方法摘要 OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。OutputStreamWriter(OutputStream out, Charset cs)
创建使用给定字符集的 OutputStreamWriter。OutputStreamWriter(OutputStream out, CharsetEncoder enc)
创建使用给定字符集编码器的 OutputStreamWriter。OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
第二步:写
void
write(char[] cbuf, int off, int len)
写入字符数组的某一部分。void
write(int c)
写入单个字符。void
write(String str, int off, int len)
写入字符串的某一部分。
第三步:关闭流
void
close()
关闭此流,但要先刷新它。
ex:
/**
* 转换流:
* InputStreamReader:字节输入流转字符输入流
* OutputStreamWriter:字符输出流转字节输出流
* @author 郑清
*/
public class _07ChangeStream {
public static void main(String[] args) throws IOException {
//InputStreamReader:字节流转字符流
//1.创建InputStreamReader对象,构造方法中传入一个InputStream字节输入流
InputStream is = new FileInputStream("D:1/1.txt");
InputStreamReader isr = new InputStreamReader(is);
//2.读
char[] c = new char[5];
int len;
while((len = isr.read(c)) != -1) {
System.out.print(new String(c,0,len));
}
//3.关闭流
isr.close();//注意:这里只需要关闭包装之后的字符流isr 不用关闭is ==》原因:因为is被包装到了isr里面,关闭isr就一起关闭了is
//OutputStreamWriter:字符流转字节流
//1.创建OutputStreamWriter对象,构造方法中传入一个OutputStream字节输出流
OutputStream fos = new FileOutputStream("D:1/1.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos);
//2.写
osw.write("这是即将写入的内容!!!");
osw.flush();//刷新流
//3.关闭流
osw.close();
}
}