美文网首页
2020-03-13-Java

2020-03-13-Java

作者: hhp895 | 来源:发表于2020-03-13 15:23 被阅读0次

1.BufferedInputStream和BufferedOutputStream

(1)没有缓冲区,去复制文件,如何操作?
【案例1】复制一个大文件


image.png
image.png
image.png

思路:


image.png

(1)创建一个文件输入流对象FileInputStream,引用要复制的文件。
(2)无法一次性读入,读取这个文件的内容,到缓冲区。所以建立一个字节数组。
(3)创建一个文件输出流对象FileOutputStream,引用到目标文件。
(4)将缓冲区内容写入到目标文件。
BufferedInputStream和BufferedOutputStream的优势:
降低磁盘IO操作次数;带有缓冲区。

BufferedInputStream

构造函数:

new BufferedInputStream(InputStream):不指定缓冲区大小,默认是8192
new BufferedInputStream(InputStream,Int),参数2指定缓冲区大小

api:

int available(),返回数据流有效的长度;
void close();关闭
int read();从缓冲区中读取
int read(byte[] b,int off,int len),从数组b中off位置,读len个;
void reset();重置
long skip(long n);跳过多少个字节。

BufferedOutputStream

构造函数:

new BufferedOutputStream(outputstream)
new BufferedOutputStream(outputstream,size)
api:
void flush();
write(byte b);写入一个字节
write(byte[] b,int off,int len),从b中获取,写入开始位置为off,写len个。
【案例】使用BufferedInputStream和BufferedOutputStream复制文件。
思路:


image.png
image.png
image.png
image.png
image.png

2.BufferedReader和BufferedWriter

字符流;带有缓冲区;

BufferedReader

构造方法:

new BufferedReader(Reader in)
new BufferedReader(Reader in,int size)

api:

void close();
int read();
int read(char[] cbuf,int off,int len)
String readLine();

BufferedWriter:

构造方法:

new BufferedWriter(Writer out)
new BufferedReader(Writer out ,int size)

api:

void close()
void flush()
void new Line();写入一个换行符
void write(int c)
void write(char cbuf[],int off,int len)
void write(String s,int off,int len)
【案例】


image.png
image.png
image.png
image.png

3.InputStreamReader和OutputStreamWriter

都是转换流,将字节流转换成字符流;或者将字符流转换成字节流

OutputStreamWriter构造方法:

new OutputStreamWriter(OutputStream)
new OutputStreamWriter(OutputStream,charsetName),指定字符集编码

api:

void write(int c);
void write(String str,int off,int len)
void flush();

InputStreamReader构造方法

new InputStreamReader(inputStream)
new InputStreamReader(inputStream,charsetName),指定字符集编码

api:

int read()
int read(char[] cbuf)


image.png

【案例1】


image.png
image.png

【案例2】


image.png
image.png

步骤:
(1)使用记事本写入文件,内容中文。
(2)在代码中使用gbk来读取文件信息。保证中文不乱码。
【作业】
把昨天出题,判断是否正确,使用BufferedInputStream和BufferedOutputStream改写。

相关文章

  • 2020-03-13-Java

    1.BufferedInputStream和BufferedOutputStream (1)没有缓冲区,去复制文件...

网友评论

      本文标题:2020-03-13-Java

      本文链接:https://www.haomeiwen.com/subject/jwncshtx.html