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

来源:互联网 发布:最好用的crm软件 编辑:程序博客网 时间:2024/05/23 12:21

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.textpublic 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);}}}


0 0
原创粉丝点击