递归,IO

本文介绍了Java中的递归概念,强调了递归的结束条件和避免内存溢出的重要性。同时,详细讲解了IO流的分类,包括字节流和字符流,以及各种流的使用方法,如FileOutputStream和FileInputStream的操作步骤。此外,还提到了缓冲流的使用,如BufferedOutputStream和BufferedReader,以及它们在读写数据和刷新缓冲区时的角色。
摘要由CSDN通过智能技术生成

递归: 方法定义本身调用方法本身的现象叫递归

注意:
递归一定要有一个出口,结束条件,否则就是死循环;
递归的次数不能太多,否则就会发生内存溢出;
构造方法不能递归使用。

IO流的分类:(java程序为中心的)
流向:
         输入流  读取数据
         输出流  写出数据
数据类型:
        字节流
        字节输入流  读取数据  InputStream
        字节输出流  写出数据  OutputStream
        字符流
        字符输入流  读取数据  Reader
        字符输出流  写出数据  Writer

 FileOutputStream:字节输出流:

字节输出流操作步骤:
创建字节流输出对象
调用write方法写数据
释放资源

void write(byte[] b)
将 b.length个字节从指定的字节数组写入此文件输出流。
void write(byte[] b, int off, int len)
将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。
void write(int b)
将指定的字节写入此文件输出流。

FileOutputStream(File file, boolean append)
创建文件输出流以写入由指定的 File对象表示的文件。 true代表的追加写入,默认是false覆盖

 FileInputStream:字节输入流:
创建FileInputStream对象
调用read方法读取数据,输出到控制台
释放资源

int read()
从该输入流读取一个字节的数据。
int read(byte[] b)
从该输入流读取最多 b.length个字节的数据为字节数组。

字节缓冲区:

字节缓冲输出流
            BufferedOutputStream

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.txt"));
字节缓冲输入流
            BufferedInputStream

BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));

字符流: (字符转换流)

字符流 = 字节流 + 编码表

Reader:
字符输入流构造方法:
InputStreamReader(InputStream in)
读取数据,根据默认的编码用字符作为桥梁将字节流转换为字符流
创建一个使用默认字符集的InputStreamReader。
InputStreamReader(InputStream in, String charsetName)
读取数据,根据指定的编码用字符作为桥梁将字节流转换为字符流
创建一个使用命名字符集的InputStreamReader。

InputStreamReader读数据方法
                public int read():一次只读一个字符
                public int read(char[] cbuf):一次读取一个字符数组

 Writer:

字符输出流构造方法:
OutputStreamWriter 字符输出流
根据默认的编码用字符流作为桥梁将字节流转成字符流
public OutputStreamWriter(OutputStream out)
根据指定的编码用字符流作为桥梁将字节流转成字符流
public OutputStreamWriter(OutputStream out,String charsetName)

OutputStreamWriter写数据方法
public void write(int c)
public void write(char[] cbuf)
public void write(char[] cbuf,int off,int len)
public void write(String str)
public void write(String str,int off,int len)

flush()的作用:刷新缓冲区,将缓冲区的内容写入到文件中
flush()与close()的区别:
close()方法调用是关闭流对象,会先刷新一次缓冲区,关闭之后,就不能继续使用该流对象了
flush()方法调用后,刷新一次缓冲区,但是流对象可以继续使用

字符缓冲流:

BufferedWriter:字符缓冲输出流
BufferedReader:字符缓冲输入流

BufferedWriter:字符缓冲输出流
        将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入

BufferedReader:字符缓冲输入流
        BufferedReader(Reader in)
        创建使用默认大小的输入缓冲区的缓冲字符输入流。

字符缓冲流的特殊方法:
BufferedWriter:
public void newLine() 写一行行分隔符。
行分隔符字符串由系统属性line.separator定义,并不一定是单个换行符('\ n')字符。
BufferedReader:
public String readLine() 读一行文字。到换行符终止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值