标签:数据 不同的 hello 不能 识别 int 否则 没有 pre
1:递归(理解)
(1)方法定义中调用方法本身的现象
举例:老和尚给小和尚讲故事,我们学编程。
(2)递归的注意事项;
(3)递归的案例:
A:递归求阶乘;
B:兔子问题(斐波那契数列);
C:递归输出指定目录下所有指定后缀名的文件绝对路径;
D:递归删除带内容的目录(小心使用).
2:IO流(掌握)
(1)IO用于在设备间进行数据传输的操作
(2)分类:
A:流向
输入流 读取数据
输出流 写出数据
B:数据类型:
字节流
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
注意:
每种基类的子类都是以父类名作为后缀名。
XxxOutputStream
XxxInputStream
XxxReader
XxxWriter
(3)FileOutputStream写出数据
A:操作步骤
1:创建字节输出流对象
2:调用write()方法写数据
3:释放资源
B:代码体现:
FileOutputStream fos = new FileOutputStream("fos.txt"); fos.write("hello".getBytes()); fos.close();
C:要注意的问题?
1:创建字节输出流对象做了几件事情?
2:为什么一定要close()?
3:如何实现数据的换行?
因为你值写了字节数据,并没有写入换行符号。
如何实现呢?写入换行符号即可。
因为不同的系统针对不同的换行符号识别是不一样的?
windows:\r\n
linux:\n
Mac:\r
而一些常见的个高级记事本,是可以识别任意换行符号的。
d:如何实现数据的追加写入?
用构造方法带第二个参数是true的情况即可。
FileOutputStream fos = new FileOutputStream("a.txt", true);
(4)FileInputStream读取数据
A:操作步骤
a:创建字节输入流对象;
b:调用read()方法;
c:释放资源.
B:代码体现:
FileInputStream fis = new FileInputStream("fos.txt"); //方式1 int by = 0; while((by=fis.read())!=-1) { System.out.print((char)by); } //方式2 byte[] bys = new byte[1024]; int len = 0; while((len=fis.read(bys))!=-1) { System.out.print(new String(bys,0,len)); } fis.close();
(5)案例:2种实现
A:复制文本文件
B:复制图片
C:复制视频
数据源:
c:\\a.txt -- 读取数据-- FileInputStream
目的地:
d:\\b.txt -- 写出数据 -- FileOutputStream
(6)字节缓冲区流
通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非常好的。
既然是这样的话,那么,java开始在设计的时候,它也考虑到了这个问题,就专门提供了带缓冲区的字节类。
这种类被称为:缓冲区类(高效类,高级流)
写数据:BufferedOutputStream
读数据:BufferedInputStream
构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了。
为什么不传递一个具体的文件或者文件路径,而是传递一个OutputStream对象呢?
原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。
(7)案例:4种实现
A:复制文本文件
B:复制图片
C:复制视频
3:字节流和字符流
IO流分类
字节流:
InputStream
FileInputStream
BufferedInputStream
OutputStream
FileOutputStream
BufferedOutputStream
字符流:
Reader
FileReader
BufferedReader
Writer
FileWriter
BufferedWriter
标签:数据 不同的 hello 不能 识别 int 否则 没有 pre
原文地址:https://www.cnblogs.com/crazypokerk/p/9090395.html