2019/1/13 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.

Slides:



Advertisements
Similar presentations
主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
檔案處理.
四資二甲 第三週作業 物件導向程式設計.
第五章 字符串.
第二章 JAVA语言基础.
例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter
Java Programming Spring, 2013
Ch07 介面與多重繼承 物件導向程式設計(II).
輸入輸出 學習目標 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第20讲 Java的输入与输出流(上) 1/.
目标 运用File类进行文件操作 理解流,标准输入/输出流的概念
第三章 控制结构.
第九章 字符串.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
Java语言程序设计 清华大学出版社 第9章 网络通信.
Signutil.
Hadoop I/O By ShiChaojie.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
Java基础 JavaSE异常.
1、了解TCP和UPD的特点和区别 2、了解TCP的连接传输数据过程 3、能够用TCP建立数据连接和传输数据
Multithread 多執行緒 I/O Lecturer:楊昌樺.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
抽象类 File类 String类 StringBuffer类
Java程序设计 第18章 二进制I/O.
第九章 Java输入输出系统.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
1、了解File类的特点和使用方法 2、掌握字节流和字符流的特点 3、能够使用字节流和字符流进行文件的读写和终端操作
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
2018/12/3 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
Java语言程序设计 第五部分 Java异常处理.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第11章 Java数据流 [内容提要] 大部分程序都需要数据的输入和输出, 从键盘读取数据, 向文件写入数据或从文件获取数据,
第10章 输入与输出 本章要点 10.1 输入与输出基础 10.2 文件输入/输出 思考与练习10
Java语言程序设计 第九部分 输入/输出.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第 十二 章 C# 中的文件处理.
异常及处理.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章Java基本程序设计.
5.4 利用tcp实现文件传输 信息工程系 向模军 Tel: QQ:
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
2019/5/3 JAVA Socket(UDP).
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
第6章 Java输入输出流与文件操作.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
9 输入输出及文件操作.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

2019/1/13 面向对象与多线程综合实验-输入输出流 教师:段鹏飞

实验 3-实验目的 了解Java中I/O流的概念和种类; 掌握字节流处理和字符流处理,包括File类, InputStream/OutputStream及其子类,Reader/Writer及其子 类; 熟练掌握文件的顺序处理,随机访问处理; 熟悉对象串行化的概念和方法。

实验内容 (1)完善showFileList()方法,实现档案信息浏览,在未讲数据库之前,系统中已存在档案信息放置在Hashtable中,提供新版DataProcessing类,该类实现了对应数据的查找、插入操作。 (2)完善uploadFile()方法,实现档案数据的上传,在未讲网络之前,该方法只需实现在指定目录中读取文件,并将其拷贝至其他目录中,此外还需将相关档案信息写入对应Hashtable中。 (3)完善downloadFile(),实现档案数据下载,目前只需要实现根据档案号,在Hashtable中查找得到文件位置,然后读取文件并将其拷贝至指定目录中。

根据流动方向的不同,流分为输入流和输出流; 对于输入和输出流,由于传输格式的不同,又分为字节流和字符流: 流的类型 根据流动方向的不同,流分为输入流和输出流; 对于输入和输出流,由于传输格式的不同,又分为字节流和字符流: 字节流是指8位的通用字节流,以字节为基本单位,在java.io包中,对于字节流进行操作的类大部分继承于InputStream(输入字节流)类和OutputStream(输出字节流)类; 字符流是指16位的Unicode字符流,以字符(两个字节)为基本单位,非常适合处理字符串和文本,对于字符流进行操作的类大部分继承于Reader(读取流)类和Writer(写入流)类。

Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四) 字节流和字符流 Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四) Java中其他多种多样变化的流均是由它们派生出来的

节点流类型

处理流类型

FileInputStream类的构造方法 构 造 方 法 说 明 FileInputStream(File file) throws FileNotFoundException 使用File对象创建文件输入流对象,如果文件打开失败,将抛出异常 FileInputStream(String name) 使用文件名或路径创建文件输入流对象,如果文件打开失败,将抛出异常

FileInputStream类的常用方法 方 法 原 型 说 明 int read() throws IOException 读取文件中的数据,一次读取一个字节,读取的数据作为返回值返回,如果读到文件末尾则返回-1,有可能抛异常,必须捕捉 int read(byte[] b) 读取文件中的数据,将读到的数据存放到byte型数组中,并返回读取的字节的数量,未读到数据返回-1,有可能抛异常,必须捕捉 void close() 关闭流对象,有可能抛异常,必须捕捉

FileInputStream对象读文件示例1 public class FileInputStreamDemo1 { public static void main(String[] args) { try { File file = new File("test.txt"); //创建文件对象 //使用文件对象创建文件输入流对象,相当于打开文件 FileInputStream fis = new FileInputStream(file); for (int i = 0; i < file.length(); i++) { char ch = (char)(fis.read()); //循环读取字符 System.out.print(ch); } System.out.println(); fis.close(); //关闭流 } catch (FileNotFoundException fnfe) { System.out.println("文件打开失败。"); } catch (IOException ioe) { ioe.printStackTrace();

FileInputStream对象读文件示例2 public class FileInputStreamDemo2 { public static void main(String[] args) { try { File file = new File("test.txt"); //创建文件对象 FileInputStream fis = new FileInputStream(file); //根据文件的字节长度创建字节数组 byte[] buf = new byte[(int)(file.length())]; fis.read(buf); //读取文件中的数据存放到字节数组中 String str = new String(buf); //利用字节数组创建字符串 System.out.println(str); //打印字符串 fis.close(); //关闭流 } catch (FileNotFoundException fnfe) { System.out.println("文件打开失败。"); } catch (IOException ioe) { ioe.printStackTrace(); }

FileOutputStream类的构造方法 构 造 方 法 说 明 FileOutputStream(File file) throws FileNotFoundException 使用File对象创建文件输出流对象,如果文件打开失败,将抛出异常 FileOutputStream(File file, boolean append) 使用File对象创建文件输出流对象,并由参数append指定是否追加文件内容,true为追加,false为不追加,异常情况同上 FileOutputStream(String name) 直接使用文件名或路径创建文件输出流对象,异常情况同上 FileOutputStream(String name, boolean append) 直接使用文件名或路径创建文件输出流对象,并由参数append指定是否追加,异常情况同上

FileOutputStream类的常用方法 方 法 原 型 说 明 void write(int b) throws IOException 往文件中写数据,一次写一个字节,有可能抛异常,必须捕捉 void write(byte[] b) 往文件中写数据,将byte数组中的数据全部写入到文件中,有可能抛异常,必须捕捉 void close() 关闭流对象,有可能抛异常,必须捕捉

FileOutputStream对象写文件示例1 public class FileOutputStreamDemo1 { //在函数内部不进行异常处理,将异常抛出函数外部 public static void main(String[] args) throws IOException String str = "Hello world!"; File file = new File("test.txt"); //创建文件对象 //通过文件对象创建文件输出流对象 //附加第二个参数true,指定进行文件追加,默认为不追加 FileOutputStream fos = new FileOutputStream(file, true); //逐个将字符写入到文件中 for (int i = 0; i < str.length(); i++) fos.write(str.charAt(i)); } fos.close(); //关闭流

FileOutputStream对象写文件示例2 public class FileOutputStreamDemo2 { //在函数内部不进行异常处理,将异常抛出函数外部 public static void main(String[] args) throws Exception String str = "I Love Java"; //通过文件名创建文件输出流对象 FileOutputStream fos = new FileOutputStream("test.txt"); //将字符串转化为字节数组 byte[] buffer = str.getBytes(); //将字节数组中包含的数据一次性写入到文件中 fos.write(buffer); //关闭流 fos.close(); }

FileInputStream/FileOutputStream小结 由于采用字节方式进行数据传输,不必考虑数据的格式问题,这两个类对文件操作的效率较高; 可以使用这两个类完成复制文件的操作。

复制文件示例 public class CopyFileDemo { public static void main(String[] args) throws IOException { File srcFile = new File("src.dat"); //源文件对象 File destFile = new File("dest.dat"); //目标文件对象 if (!(destFile.exists())) { //判断目标文件是否存在 destFile.createNewFile(); //如果不存在则创建新文件 } //使用源文件对象创建文件输入流对象 FileInputStream fis = new FileInputStream(srcFile); //使用目标文件对象创建文件输出流对象 FileOutputStream fos = new FileOutputStream(destFile); byte[] buf = new byte[1024]; //创建字节数组,作为临时缓冲 System.out.println("开始复制文件..."); while (fis.read(buf) != -1) { //循环从文件输入流中读取数据 fos.write(buf); //写入到文件输出流中(注意文件多写) System.out.println("文件复制成功!"); fis.close(); //关闭流 fos.close();

2019/1/13 谢谢