Java程序设计 第18章 二进制I/O.

Slides:



Advertisements
Similar presentations
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
Advertisements

檔案處理.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
第五章 字符串.
第十五章 网络编程.
第二章 JAVA语言基础.
例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter
Java Programming Spring, 2013
輸入輸出 學習目標 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第20讲 Java的输入与输出流(上) 1/.
目标 运用File类进行文件操作 理解流,标准输入/输出流的概念
Chin-Yi Tsai Java Chin-Yi Tsai
6. Java输入输出.
第7章 输入输出处理.
第3章 流与Java中的文件操作 孙焘.
第九章 字符串.
JAVA 网络编程基础.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
API设计实例分析 通用IO API.
Java语言程序设计 清华大学出版社 第9章 网络通信.
Hadoop I/O By ShiChaojie.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
1、了解TCP和UPD的特点和区别 2、了解TCP的连接传输数据过程 3、能够用TCP建立数据连接和传输数据
Multithread 多執行緒 I/O Lecturer:楊昌樺.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
第九章 Java输入输出系统.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
1、了解File类的特点和使用方法 2、掌握字节流和字符流的特点 3、能够使用字节流和字符流进行文件的读写和终端操作
第六讲 JSP中的文件操作(2) 教学目的 本讲继续讲述JSP中使用Java输入、输出流实现文件的读写操作 。 1 文件上传 2 文件下载
2018/12/3 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
第10章 儲存偏好設定、檔案與資料庫 10-1 存取偏好設定 10-2 檔案存取 10-3 關聯式資料庫與SQLite
第七章 输入/输出 标准输入输出 流式I/O基础 文件 随机存取文件 对象输入/输出流.
第12章 JSP的檔案與電子郵件處理 12-1 伺服端的檔案處理 12-2 伺服端檔案的讀取與寫入 12-3 客戶端的檔案上傳
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第11章 Java数据流 [内容提要] 大部分程序都需要数据的输入和输出, 从键盘读取数据, 向文件写入数据或从文件获取数据,
第10章 输入与输出 本章要点 10.1 输入与输出基础 10.2 文件输入/输出 思考与练习10
Java语言程序设计 第九部分 输入/输出.
文件流. 文件流 文件流 Stream FileStream BufferedStream MemoryStream NetworkStream …… 所有流的抽象 Stream FileStream BufferedStream MemoryStream NetworkStream ……
程式設計 博碩文化出版發行.
例外處理與 物件序列化(Exception Handling and Serialization of Objects)
2019/1/13 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
第 十二 章 C# 中的文件处理.
JAVA语言程序设计 第六章 输入/输出流和文件 郑莉.
第7章 目录和文件操作 王德俊 上海交通大学继续教育学院.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
5.4 利用tcp实现文件传输 信息工程系 向模军 Tel: QQ:
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
第6章 Java输入输出流与文件操作.
第二章 Java基本语法 讲师:复凡.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第2章 Java语言基础.
9 输入输出及文件操作.
Summary
Presentation transcript:

Java程序设计 第18章 二进制I/O

学习目标 理解输入和输出流 理解字节流和字符流 掌握使用文件流读写文件 掌握缓冲流 了解数据流 掌握对象流和对象序列化 了解RandomAccessFile

输入输出 java.io包以流(stream)定义输入/输出。 java.io包中的流主要分为 字节流:以8位字节形式读写(InputStream/OutputStream) 字符流:以16位字符形式读写(Reader/Writer)。 信息源 程序 (写) 目的地 程序 (读) InputStream OutputStream 或Reader 或Writer open a stream while more information{ read information } close the stream write information

字节流 InputStream OutputStream FileInputStream ByteArrayInputStream DataInputStream FilterInputStream BufferedInputStream InputStream PipedInputStream PushbackInputStream ObjectInputStream SequenceInputStream FileOutputStream ByteArrayOutputStream DataOutputStream OutputStream FilterOutputStream BufferedOutputStream PipedOutputStream PrintStream ObjectOutputStream

InputStream public int read() public int read(byte b[]) public int read(byte b[], int offset, int length) public int available() public long skip(long n) public boolean markSupported() public void mark(int readlimit) public void reset() public void close() Example:CountBytes.java

OutputStream public void write(int b) public void write(byte b[]) public void write(byte b[], int offset, int length) public void flush() throws IOException public void close() throws IOException Example:CopyBytes.java

字符流 CharArrayReader StringReader InputStreamReader FileReader Reader FilterReader PushbackReader PipedReader BufferedReader LineNumberReader CharArrayWriter StringWriter OutputStreamWriter FileWriter Writer PrintWriter FilterWriter PipedWriter BufferedWriter

Reader public int read() public int read(char buf[]) public int read(char buf[], int offset, int length) public boolean ready() public long skip(long n) public boolean markSupported() public void mark(int readAheadLimit) public void reset() public abstract void close() Example:CountSpace.java

Writer public void write(int c) public void write(char buf[]) public void write(char buf[], int offset, int length) public void write(String str) public void write(String str, int offset, int length) public Writer append(CharSequence csq) public Writer append(CharSequence csq, int start, int end) public Writer append(char c) public abstract void flush() public abstract void close() Example:Copy.java

流类汇总 字符 字节 读 写 CharArrayReader CharArrayWriter ByteArrayInputStream 数组 CharArrayReader CharArrayWriter ByteArrayInputStream ByteArrayOutputSteam 字符串 StringReader StringWriter StringBufferInputStream - 管道 PipedReader PipedWriter PipedInputStream PipedOutputStream 文件 FileReader FileWriter FileInputStream FileOutputStream 缓冲 BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream 过滤 FilterReader FilterWriter FilterInputStream FilterOutputStream 串行化 ObjectInputStream ObjectOutputStream 数据 DataInputStream DataOutputStream 计数 LineNumberReader LineNumberInputStream 预览 PushbackReader PushbackInputStream 打印 PrintWriter PrintStream 转换 InputStreamReader OutputStreamWriter 联结 SequenceInputStream

文件流 文件流用于读写磁盘文件。 构造函数 FileInputStream FileOutputStream FileReader FileWriter 构造函数 public stream(String fileName) public stream(File file) 当读文件不存在时,会产生java.io.FileNotFoundException异常 当写文件不存在时,会创建一个新文件。如果文件存在,可以指定是否追加 Example:TestFileReader.java, TestFileWriter.java

InputStreamReader和OutputStreamWriter public InputStreamReader(InputStream in) public InputStreamReader(InputStream in, Charset c) 从底层InputStream读取的字节,按指定的编码格式转换成字符。 OutputStreamWriter public OutputStreamWriter(OutputStream out) public OutputStreamWriter(OutputStream out, Charset c) 写入OutputStreamWriter的字符使用指定的编码格式转换成字节,再写入底层的OutputStream。

缓冲流 缓冲流对底层数据进行缓冲,减少文件访问次数。 构造函数 方法 BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out , int size) BufferedReader(Reader in) BufferedReader(Reader in , int size) BufferedWriter(Writer out) BufferedWriter(Writer out , int size) 方法 BufferedReader的readLine方法,用于读取一行文本,如果到达文件结尾,readLine返回null。 BufferedWriter的newLine方法用于写入一个换行符。

例 在文本区显示文件 编写程序,在TextArea中显示文件的内容。 Example:FileViewer.java

JFileChooser 文件选择对话框用于从文件系统中选择文件名称。 Example:TextEditor.java

数据字节流 以不依赖于机器的方式对基本数据类型和字符串进行读写。 Example:TestDataStream.java

对象串行化 串行化(serialization)是将一个对象转化为字节流的过程。 只有对象的类实现了Serializable接口,才能被串行化。 public class MyClass implements Serializable {} ObjectOutputStream自动写出: 对象的类。 类的签名。 所有非transient和非static成员的值,包括引用其它对象的成员。 反串行化(deserialization )是从字节流重建对象的过程。

对象流 Write Read FileOutputStream out = new FileOutputStream("theTime"); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject("Today"); s.writeObject(new Date()); Read FileInputStream in = new FileInputStream("theTime"); ObjectInputStream s = new ObjectInputStream(in); String today = (String)s.readObject(); Date date = (Date)s.readObject(); Example:TestObjectOutputStream.java, TestObjectInputStream.java

对象版本 串行版本UID是一个long值,当对象串行化时写入到流中。缺省情况下,这个标识符是类名、父类型和成员的一个散列值。 当从ObjectInputStream读取对象时,先读取串行版本UID,再加载类。如果加载类的UID与流中的UID不匹配,则抛出InvalidClassException。 可以显式地声明一个串行版本UID private static final long serialVersionUID = 307795172754062330L;

随机访问文件 随机访问文件允许对文件的内容进行非顺序的读写。 RandomAccessFile实现了DataInput和DataOutput接口。 RandomAccessFile(File file, String mode) RandomAccessFile(String name, String mode) void seek(long pos) long getFilePointer() void setLength(long newLength) Example:TestRandomAccessFile.java