黑马程序员-------io流总结

------- android培训java培训、期待与您交流! ----------

递归:

1.递归是基于:方法可以自己调用自己;
2.注意:
1).一定要有出口,否则就是死递归;
2).次数不能太多,否则堆栈溢出;
3).构造方法不能递归调用;
3.重点练习:
1).递归输出指定目录下所有的java文件的绝对路径案例
2).递归删除带内容的目录案例

IO流:

1.IO流概念:
1.IO流:InputStream和OutputStream
2.流:是有方向的,线性的;


io流的分类:

一:字节流:

1.类层次结构:
OutputStream:
|--FileOutputStream:
|--FilterOutputStream
|--BufferedOutputStream:
InputStream:
|--FileInputStream:
|--FilterInputStream
|--BufferedInputStream:
2.写入的方法:
write(int n):写入一个字节:
write(byte[] byteArray):写入一个字节数组;
3.读取的方法:
int read():读取一个字节:
int read(byte[] byteArray):读取一个字节数组;
4.字节流可以对:二进制文件和文本文件进行读写。
5.当读写二进制文件时:首选带缓冲的字节流;
 当读写文本文件时:如果不需要显示,也可以选择字节流。通常
                           使用带缓冲的字符流。


二:字符流:

1.类层次结构:
Writer:
  |--OutputStreamWriter:
|--FileWriter:
  |--BufferedWriter:
Reader:
  |--InputStreamReader:
|--FileReader:
  |--BufferedReader:
2.写入的方法:
基本字符流,和缓冲流都具有的:
write(int n):写入一个字符:
write(char[] charArray):写入一个字符数组;
write(char[] charArray,int off,int len):写入字符数组的一部分;
write(String s):写入一个字符;
write(String s,int off,int len):写入一个字符串的一部分;
缓冲流特有的:
BufferedWriter:
newLine();
BufferedReader:
String s readLine();
3.当需要对文本文件进行读写,显示:首选使用带缓冲的字符流;


附上一段IO流递归模式复制文件夹的代码:


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Demo {
	public static void main(String[] args) throws IOException {
		File f1=new File("D:\\1.avi");
		File f2=new File("E:\\zifu.avi");
		File f3=new File("E:\\zijie.avi");
		
		BufferedInputStream bfin=new BufferedInputStream(new FileInputStream(f1));
		BufferedOutputStream bfout=new BufferedOutputStream(new FileOutputStream(f2));
		byte[] bytearr=new byte[1024];
		int x=0;
		while((x=bfin.read(bytearr))!=-1){
			bfout.write(bytearr,0,x);
		}
		bfin.close();
		bfout.close();
		
		BufferedReader bfr=new BufferedReader(new FileReader(f1));
		BufferedWriter bfw=new BufferedWriter(new FileWriter(f3));
		char[] chararr=new char[1024];
		int s=0;
		while((s=bfr.read(chararr))!=-1){
			bfw.write(chararr, 0, s);
		}
		bfr.close();
		bfw.close();
		
	}
}


注意:不要使用字符流复制视频,图片等非文本文件,因为图片视频等文件的某些字符编码在编码表中找不到会被丢弃


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值