黑马软件工程师-IO流的简单应用

黑马程序员---IO流的简单应用


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

 IO流概述:

(1)IO流的作用:上传文件和下载文件。
(2)IO流的分类:
A:流向
输入流 读取数据
输出流 写出数据
B:数据类型
字节流:字节输入流、字节输出流
字符流:字符输入流、
字符输出流

一般来说,如果没有说明按照哪种类型分,指的是按照数据类型分。
(3)什么时候使用字符流,什么时候使用字节流。
如果一个要操作的文件,通过记事本打开并能够读懂其内容,就可以考虑使用字符流。
否则,就使用字节流。
什么都不知道,就用字节流。
(4)IO的基类及具体类
A:字节流
字节输入流:InputStream、FileInputStream
字节输出流:OutputStream、FileOutputStream
B:字符流
字符输入流:Reader、FileReader
字符输出流:Writer、FileWriter
(5)FileWriter写数据的步骤及代码体现:
步骤:
A:创建字符输出流对象。
B:调用write方法。
C:释放资源。

<pre name="code" class="java">public class IODemo {
	public static void main(String[] args) throws IOException {
		// 创建字符输出流对象
		FileWriter fw = new FileWriter("fw.txt");
		// public void write(String str)
		fw.write("hello,io,I am coming");
		fw.flush();<pre name="code" class="java">                fw.close();

	}
}


几个要注意的小问题:A:创建字符输出流对象做了哪些事情? 调用系统功能,创建一个文件fw2.txt。  创建字符输出流对象。  把对象指向文件B:为什么要刷新缓冲区?  因为数据底层是字节流数据,如果要使用字符流数据,就得刷新缓冲区才能写入文件。C:为什么要释放流资源?  关闭流对象,将流对象变为垃圾。  通知操作系统去释放,并开始创建那个文件相关的资源。D:刷新和释放有什么区别?          flush() 刷新缓冲区,流对象还可以继续使用。            close() 释放资源,但是会先刷新一次缓冲区,保证数据不丢失,操作完毕后,流对象不可以再被使用。 E:如何实现数据的换行?                            不同的操作系统对换行符的识别不太一致: windows:\r\nlinux:\n mac:\rF:如何实现数据的追加写入?                           使用带两个参数的构造方法。  第二个参数指示是否是追加写入。   public FileWriter(String fileName,boolean append)(6)FileReader读数据的步骤及代码体现:步骤:A:创建字符输入流对象。B:调用read方法,并把数据显示在控制台。C:释放资源。

			FileReader fr = new FileReader("fr.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(String.valueOf(chs,0,len));
			}
			fr.close();
(7)复制文本文件:
两种方式操作。代码自己补齐。
数据源:c:\\a.txt
目的地:d:\\b.txt
(8)加入异常后的代码(看懂即可)
A:FileWriter写数据
B:字符流复制文本文件

(9)使用FileReader和FileWriter来拷贝文件

public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源
		FileReader fr = new FileReader("IODemo.java");
		// 封装目的地
		FileWriter fw = new FileWriter("d:\\Copy.java");

		// 读取数据并写出数据
		int ch = 0;
		while ((ch = fr.read()) != -1) {
			fw.write(ch);
		}

		// 释放资源
		fw.close();
		fr.close();
	}
}




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

版权声明:本文为博主原创文章,未经博主允许不得转载。