J2SE第八章——IO输入输出流(基本知识与IO流实现文件复制)

1. 基本概念与IO流来源

        

         Test.java文件,作为数据的载体(容器),最终位于磁盘的某个目录下的

         写段代码“HelloWorld”,怎么操作:

                   运行"sublime"工具,然后,  在磁盘上找到Test.java文件,然后“打开文件”,Test.java文件的内容加载“读”到“内存中”。

                 “打开”操作就在“内存”和“数据源-文件”之间搭建了一个通道,然后“数据”就通过通道从“数据源-文件”读到了“内存”。

                  输入“System.out.println("HelloWorld")”代码,这是该数据位于内存中。

                  直接关闭文件,不执行“保存”,或者执行“保存”,把内存中的数据“写入”文件。

                  “保存”操作就在“内存”和“数据源-文件”之间搭建了一个通道,然后“数据”就通过通道从“内存”写入了“数据源-文件”。

                   给“内存”和“数据源-文件”之间的通道起个名字就叫做“流”

                   流的作用:数据传输

 

         抽取模型

                    

                     写操作  内存 ----> 文件(数据源)

                     读操作  内存<---- 文件(数据源)  

                   一个流:数据从文件流向内存(读--输入)

                   一个流:数据从内存流向文件(写--输出)

 

         按照数据的流向:把流分为:输入流  输出流

         按照数据流动的单位,把流分为:字节流   字符流 

 

                                               输入流                                               输出流

         字节流              字节输入流(InputStream)     字节输出流(OutputStream)

         字符流              字符输入流 (Reader)                          字符输出流(Writer)

 

2. 输入、输出、复制粘贴

 

         以前我们都是对磁盘文件直接操作

         我们现在的应用:

                   用过一段java代码,实现数据在  内存--数据源文件之间的交互

 

                   写一段代码,完成读文件、写文件、复制文件:

import java.io.*;

public class Test {
	public static void main(String[] args) {
		m1();
	}
	//读取e:\\a\\01.text
	//问题其实就是读取数据,把数据从文件读入内存
	//明确数据交互的双方是是谁:内存、数据源文件
	//搭建管道(流):方向(输入)、单位(速率)(字节) 
	//----字节输入流InputStream
	//具体到特定的数据源,有和其对应的(子类)字节输入流
	//比如这里数据源是文件,那么和文件对应的字节输入流叫做:FileInputStream
	// 正式搭建管道(流):代码实现。就是创建对象(数据源作为参数)
					//InputStream is = new FileInputStream("e:\\a\\01.text");
	//开始读取  
	// 代码实现:输入流提供了从数据源读取数据的方法read()
	/*int c = -1;
	while ((c = is.read()) != -1) {
		System.out.print((char) c);
	}*/

	public static void m1() throws Exception  {
		InputStream is = new FileInputStream("e:\\a\\01.text");
		int c = -1;
		while ((c=is.read())!=-1) {
			System.out.print((char)c);
		}
	}


	//写文件
	public static void m2() throws Exception {
		OutputStream op = new FileOutputStream("e:\\a\\02.text");
		op.write("h");
		op.write("e");
		op.write("l");
	}

	//复制粘贴  把01.text拷贝到02.text
	public static void m3() {
		FileInputStream fis = new FileInputStr eam("e:\\a\\01.txt");
		FileOutputStream fos = new FileOutputStream("e:\\a\\02.txt");

		int c = -1;
		while ((c=fis.read())!=-1) {
			fos = write(c);
		}
	}

}


你可能感兴趣的:(java笔记)