黑马程序员:关于我对IO流的总结以及习题(面试必考项目)

IO流(掌握)
	(1)IO流的分类:
		A:字节流
			字节输入流	InputStream
			字节输出流	OutputStream

		B:字符流
			字符输入流	Reader --- FileReader
			字符输出流	Writer  --- FileReader

IO流体系图(理解):




	(2)FileWriter写入数据
		步骤:
			A:创建字符输出流对象
			B:调用写入数据方法,并刷新缓冲区
			C:释放资源

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

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

			fw.close();

		问题?
			A:创建字符输出流对象做了几件事情?
			 a:创建字符输出流对象
             b:调用对象的写入数据方法,并刷新缓冲区
			 c:释放资源
			B:写数据完毕后,为什么要刷新?

			C:为什么要close()?
             1:让流对象变成垃圾
			 2:通知系统去释放和文件相关的资源

			D:flush()和close()的区别?
			 flush():只刷新缓冲区,流对象还可以继续使用。
     		         close():先刷新缓冲区,在关闭流对象。流对象不可以继续被使用。

			E:怎么实现数据换行?
                         给出换行符
			 windows:\r\n
			 linu:\n
			 mac:\r

			F:怎么实现数据追加写入?
			构造时用带两个参数的
			public FileWriter(String fileName,true){}

	(3)FileReader读取数据
		步骤:
			A:创建字符输入流对象
			B:调用读取数据方法,并显示
			C:释放资源

		代码体现:
			FileReader fr = new FileReader("a.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();


	(4)案例:
		复制文本文件, 从D盘中复制一个haha.txt文件(里面字节写上”我爱学Java, 我爱学编程”)到E盘下, 起名为copy.txt
<pre class="java" name="code">public class CopyDemo {
	public static void main(String[] args) throws IOException {
		FileReader fl = new FileReader("f:\\复制文件\\a.txt");
		FileWriter fw = new FileWriter("e:\\copy.java");
		BufferedReader br =new BufferedReader(fl);
		BufferedWriter  bw = new BufferedWriter(fw);
		int len = 0;
		while ((len = br.read()) != -1) {
			bw.write(len);
		}
		br.close();
		bw.close();
	}
}

字节流:

输入流:

InputStream

int read()

int read(byte[] bys)

FileInputStream

输出流:

OutputStream

write(int by)

write(byte[] bys,int index,int len)

FileOutputStream

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值