IO流(二)

递归(理解) 

	
		方法定义中调用方法本身的现象

2、递归的注意事项

	
		A:要有出口,否则就是死递归
		B:次数不能过多,否则内存溢出
		C:构造方法不能递归使用

3、递归的案例

	
		A:递归求阶乘
		B:兔子问题
		C:递归输出指定目录下所有指定后缀名的文件绝对路径
		D:递归删除带内容的目录(小心使用)

IO流(掌握) 

	
	IO用于在设备间进行数据传输的操作	

1、分类

	
	A:流向
			输入流	读取数据
			输出流	写出数据
		B:数据类型
			字节流	
					字节输入流InputStream
									FileInputStream
									BufferedInputStream
					字节输出流OutputStream
									FileOutputStream
									BufferedOutputStream
			字符流
					字符输入流Reader
								FileReader
								BufferedReader
					字符输出流Writer
								FileWriter
								BufferedWriter
		注意:
			a:如果我们没有明确说明按照什么分,默认按照数据类型分。
			b:除非文件用windows自带的记事本打开我们能够读懂,才采用字符流,否则建议使用字节流。

2、FileOutputStream写出数据

	
		A:操作步骤
			a:创建字节输出流对象
				FileOutputStream构造方法
					FileOutputStream(File file);
					FileOutputStream(String Path);				
			b:调用write()方法
				public void write(int b)	//写入一个字节
				public void write(byte[] b)	//写入一个字节数组
				public void write(byte[] b,int off,int len)	//写入字节数组的一部分
			c:释放资源
			
		B:代码体现:
			FileOutputStream fos = new FileOutputStream("fos.txt");
			
			fos.write("hello".getBytes());
			
			fos.close();
			
		C:异常处理版代码
			try {
				// fos = new FileOutputStream("z:\\fos4.txt");
				fos = new FileOutputStream("fos4.txt");
				fos.write("java".getBytes());
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
				// 如果fos不是null,才需要close()
				if (fos != null) {
					// 为了保证close()一定会执行,就放到这里了
					try {
						fos.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
			
		D:要注意的问题?
			a:XxxOutputStream继承IOException(两种处理方式)
			b:创建字节输出流对象做了几件事情?
				1) 调用系统功能区创建文件
				2) 创建fos对象
				3) 把fos对象指向这个文件
			c:为什么要close()?
				关闭此文件流并释放与此有关的所有系统资源
			d:如何实现数据的换行?
				fos.write("\r\n".getBytes());
			e:如何实现数据的追加写入?
				FileOutputStream fos = new FileOutputStream("fos.txt",true);

3、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();

4、字节缓冲区流

	
		A:BufferedOutputStream
			BufferedOutputStream bos = new BufferedOutputStream(
				new FileOutputStream("bos.txt"));
		B:BufferedInputStream

5、案例(4种实现)

	
		A:复制文本文件
		B:复制图片
		C:复制视频
posted @ 2017-09-27 23:18  wangw0107  阅读(150)  评论(0编辑  收藏  举报