递归和IO

来源:互联网 发布:淘宝客服在家上班 编辑:程序博客网 时间:2024/06/15 15:29
1:递归(理解)
(1)方法定义中调用方法本身的现象被称为递归。
举例:老和尚给小和尚讲故事
     我们学编程
(2)递归的注意事项:
A:递归一定要有出口,否则就是死递归。
B:递归的次数不能过多,否则内存溢出。


构造方法不能递归调用。
(3)案例:(理解)
A:递归求阶乘
B:兔子问题
C:获取指定目录下所有指定后缀名称的文件全路径
D:删除带内容的目录


2:IO(字符流 掌握)
(1)IO流的分类:
IO流:
按流向:
输入流 读取数据
输出流 写入数据
按操作的数据类型:
字节流
字符流


如果能够用记事本打开并读懂的,就用字符流,
其他的,全部使用字节流。


一般来说,如果没有限定,别人问IO流的分类,指定的是字节流和字符流。
(2)IO流的四个基本类
A:字节流
输入流
InputStream
|--FileInputStream
输出流
OutputStream
|--FileOutputStream
B:字符流
输入流
Reader
|--FileReader
输出流
Writer
|--FileWriter
(3)字符输出流:字符输出流操作步骤
A:创建字符输出流对象
FileWriter(String fileName)
FileWriter(File file)
B:调用write方法,并flush()
write(String str)
write(String str,int index,int len)
write(int ch)
write(char[] chs)
write(char[] chs,int index ,int len)
C:释放资源
close()


代码体现:
FileWriter fw = new FileWriter("fw.txt");


fw.write("hello,IO");
fw.flush();


fw.close();


问题?自己补齐
创建字符输出流对象做了几件事情?
写入数据后为什么需要刷新?
最后为什么需要释放资源?
刷新流和关闭流的区别是什么?
怎么实现数据换行?
怎么实现数据追加写入?
(4)字符输入流:字符输入流操作步骤
A:创建字符输入流对象
FileReader(File file)
FileReader(String fileName)
B:调用read()方法
int read()
int read(char[] chs)
C:释放资源
close()


代码体现:
FileReader fr = new FileReader("fw.txt");


//方式1
int ch = 0;
while((ch=fr.read())!=-1)
{
System.out.print((char)ch);
}


//方式2
char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
System.out.print(new String(chs,0,len));
}


fr.close();
(5)复制文件(c:\\a.txt 到 d:\\b.txt)
方式1:一次读取一个字符然后一次写入一个字符
FileReader fr = new FileReader("c:\\a.txt");
FileWriter fw = new FileWriter("d:\\b.txt");


int ch = 0;
int count = 0;
while((ch=fr.read())!=-1)
{
fw.write(ch);
if(++count%10000==0)
{
fw.flush();
}
}


fw.close();
fr.close();


方式2:一次读取一个字符数组然后一次写入一个字符数组
FileReader fr = new FileReader("c:\\a.txt");
FileWriter fw = new FileWriter("d:\\b.txt");


char[] chs = new char[1024];
int len = 0;
while((len=fr.read(chs))!=-1)
{
fw.write(chs,0,len);
fw.flush();
}


fw.close();
fr.close();







原创粉丝点击