JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
第一章 第三节 java 的基本语法 第一章 第十三节 输入输出流. 上节回顾  掌握 java 中异常的概念  掌握 java 异常的分类  掌握 java 异常的捕获和处理.
檔案處理.
全国二级Java考试中的几个难点 输入输出流和文件处理 Java的多线程机制 Applet类与Applet小程序 Java的异常处理.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
四資二甲 第三週作業 物件導向程式設計.
第十五章 网络编程.
第二章 JAVA语言基础.
例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter
Java Programming Spring, 2013
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
輸入輸出 學習目標 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第20讲 Java的输入与输出流(上) 1/.
目标 运用File类进行文件操作 理解流,标准输入/输出流的概念
6. Java输入输出.
第7章 输入输出处理.
第3章 流与Java中的文件操作 孙焘.
第九章 字符串.
Hadoop I/O By ShiChaojie.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
Multithread 多執行緒 I/O Lecturer:楊昌樺.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
Java程序设计 第18章 二进制I/O.
第九章 Java输入输出系统.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
1、了解File类的特点和使用方法 2、掌握字节流和字符流的特点 3、能够使用字节流和字符流进行文件的读写和终端操作
2018/12/3 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
走进编程 程序的顺序结构(二).
辅导课程六.
第11章 Java数据流 [内容提要] 大部分程序都需要数据的输入和输出, 从键盘读取数据, 向文件写入数据或从文件获取数据,
第10章 输入与输出 本章要点 10.1 输入与输出基础 10.2 文件输入/输出 思考与练习10
Java语言程序设计 第九部分 输入/输出.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
2019/1/13 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
异常及处理.
如何生成设备节点 广州创龙电子科技有限公司
C/C++/Java 哪些值不是头等程序对象
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
第七章 操作符重载 胡昊 南京大学计算机系软件所.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
5.4 利用tcp实现文件传输 信息工程系 向模军 Tel: QQ:
$9 泛型基础.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
实验七 安全FTP服务器实验 2019/4/28.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
Lab17 程序设计B班
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
Visual Basic程序设计 第13章 访问数据库
第6章 Java输入输出流与文件操作.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
9 输入输出及文件操作.
Summary
Presentation transcript:

JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室

第十二章输入输出流 教学目标: 本章将重点介绍数据流的概念以及应用,以及对字节流、字符流、管道流和文件的操作。 教学重点: 教学难点: 文件的操作。

一、Java I/O方面的基础知识 流:它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。 缓冲区:流的两端都有数据缓冲区可以暂存数据。这样接收端可以不必每时每刻都监视流是否有数据需要接收,数据来到之后放在缓冲区内,等需要时再去读取。而发送端也不必每一个字节都调用发送方法,而是等集中了一定数量的数据后再一起发送,大大提高了效率。 数据发送端 (生产者) 数据接收端 (消费者) 缓冲区 流的数据传送

目的: 为用户提供与设备无关的输入输出。 Java I/O包: 在Java.io包中包括有许多类,它们为用户提供许多有关文件的各个方面操作。 实现的机制: 采用面向对象的文件读写方式来操作文件,即将所要读写的文件数据转化为相应的流类的对象,然后通过流对象操作其方法。

二、I/O流的层次 RandomAccessFile Reader InputStream Object File Writer 随机文件操作 RandomAccessFile Reader InputStream Object 文本格式操作 二进制格式操作 File Writer OutputStream 文件特征与管理

说明: 1. File类:用于文件或目录的描述信息,例如生成新的目录、改变文件名、删除文件、判断文件所在路经等。 2. InputStream类:抽象类。基于字节的输入操作。是所有输入流的父类。定义了所有输入流都具有的共同特征。 3. OutputStream类:抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。 4. Reader类:抽象类。基于字符的输入操作。 5. Writer类:抽象类。基于字符的输出操作。 6. RandomAccessFile类:它的功能丰富。可以从文件的任意位置进行存取(输入输出)操作。

三、有关文件名及目录名的类 File 类:它是独立于系统平台的,利用其构造函数创建出相应的File 对象;再调用其中的方法实现对文件的各个属性方面的操作。 构造函数: File( String path) File(String path, String FileName) File(File dir, String name) 用途:File类提供了一种与机器无关的方式来描述一个文件对象的属性,通过类File所提供的方法,可以得到文件或目录的描述信息,这主要包括名称、所在路经、可读性、可写性、文件的长度等,还可以生成新的目录、改变文件名、删除文件、列出一个目录中所有的文件等。

文件名及目录名编程操作实例 实例一: 文件的各个属性操作和各种方法的使用(FileTest.java) 实例二: 通过File类来实现列出一个目录下所有的*.class文件(FileFilterTest.java)

四、有关文件数据操作的类 1. 抽象基类InputStream/OutputStream :它们主要提供文件内容操作的基本功能函数read()、 write()、close()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。 2. 文件操作的一般方法: 根据所要操作的类型生成对应输入输出文件类的对象; 调用此类的成员函数实现文件数据的读写; 关闭此文件流对象。 3. 文件操作的应用要点: 异常的捕获:由于包java.io中几乎所有的类都声明有I/O异常,因此程序应该对这些异常加以处理。 流结束的判断:方法read()的返回值为-1时;readLine()的返回值为null时。 示例:InputStream OutputStream

五、本地文件读写的类 1. FileInputStream/FileOutputStream:它们用于本地文件的二进制格式顺序读写。 2. 要求:读和写要分别创建出不同的文件流对象; 3. 编程过程: 生成文件流对象 调用流类中的功能函数如read()、write(int b)等读写文件内容 close()关闭文件 4. 实例:文件复制 文件拷贝的应用程序模拟Copy

六、文本字符流读写 1. Reader和Writer: 提供的对字符流处理的类,它们为抽象类。一般通过其子类来实现。 2. InputStreamReader(InputStream in) 和OutputStreamWriter(OutputStream out): 它们可以使用指定的编码规范并基于字节流生成对应的字符流。 注意: InputStreamReader isr=new InputStreamReader(“my.txt”); //错误 应该: FileInputStream fis=new FileInputStream(“my.txt”); InputStreamReader isr=new InputStreamReader(fis);

3. BufferedReader(InputStreamReader isr, int size) 和 BufferedWriter(OutputStreamWriter osr, int size): 为提高字符流的处理效率,可以采用缓冲机制的流实现对字符流作成批的处理,避免了频繁的从物理设备中读取信息 。 4. 实例讲解: CharInput.java和NumberInput.java LineNumberReader FileWrite的追加模式

七、管道输入输出 1. PipedInputStream/PipedOutputStream类:它用于实现管道的二进制格式的输入输出(将一个线程的输出结果直接连接到另一个线程的输入端口,实现两者数据直接传送)。 2. PipedReader/PipedWriter类:它用于实现管道的字符格式的输入输出。 3. 要求:操作时需要将两个端口相互连结。 4. 实现原理: 线程1 线程2 临时文件 管道

5. 管道的连接: 方法一:是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象 方法二:是利用双方类中的任一个成员函数 connect()相连接 6. 实例讲解: PipedIO.java

八、随机文件读写 1. RandomAccessFile类:它直接继承于Object类而非InputStream/OutputStream类,从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。 2. 要求:指明读写类型并改变文件读写位置的指针。 3. 编程步骤: 生成流对象并且指明读写类型; 移动读写的数据位置; 读写文件内容; 关闭文件。

4.由于RandomAccessFile类实现了DataOutput与DataInput接口,因而利用它可以读写Java中的不同类型的基本类型数据(比如采用readLong()方法读取长整数,而利用readInt()方法可以读出整数值等)。 5. 实例讲解: RandomFileRW.java RWFile.java

九、过滤流--带格式的读写操作 1.过滤流:将一个过滤流连接到另一个流上,则在从原始的流读写数据的同时,利用过滤流可以对这些数据进行加工处理。 2.DataInputStream 和DataOutputStream类:它们分别为FilterInputStream和FilterOutputStream类的子类。同时DataInputStream 和DataOutputStream类由于分别实现了DataInput和DataOutput接口中定义的独立于具体机器的带格式的读写操作,从而可以实现对Java中的不同类型的基本类型数据的读写。

3.编程方法: 为了使用过滤流,用户需要在创建过滤流的同时将过滤流连接到另一个输入(输出)流上。如可以将DataInputStream连接到标准的输入流上,然后用户就可以方便地使用DataInputStream类的readXXX()方法类实现从标准输入中读取数据。 4.实例讲解: dataTest.java

import java.io.*; public class JavaFile { public static void main(String args[]) { int X=100; float Y=3.14f; try { FileOutputStream fos=new FileOutputStream("data.dat"); DataOutputStream dos=new DataOutputStream(fos); dos.writeInt(X); dos.writeFloat(Y); dos.close(); } catch(FileNotFoundException e){ catch(IOException e){ 带格式的写操作

import java.io.*; public class JavaFile { public static void main(String args[]) { int X; float Y; try { FileInputStream fis=new FileInputStream("data.dat"); DataInputStream dis=new DataInputStream(fis); X=dis.readInt(); Y=dis.readFloat(); dis.close(); System.out.println("X="+X); System.out.println("Y="+Y); } catch(FileNotFoundException e){ catch(IOException e) { 带格式的读操作

十、标准输入输出流 1. 标准输入流:System.in是InputStream类的对象,当程序中需要从键盘读入数据时候,只需要调用System.in中的read()方法。 char ch=System.in.read(); 注意: 必须捕获System.in.read()所抛出的异常; 执行System.in.read()方法将从键盘缓冲区读入一个字节的数据,然而返回的16位的二进制数据,其低8位为键盘的ASCII码,高8位为0; 使用System.in.read()来实现键盘输入时,如果键盘缓冲区中没有数据时,系统将进入阻塞状态。所以可以利用它来实现程序的暂停,用户输入后再继续执行。 示例:键盘输入 输入输出的重定向

课堂小结 掌握输入输出流的基本概念。 相关类的基本结构和功能。 熟练掌握文件操作。