王豐緒 銘傳大學資訊工程學系 問題:JAVA 二元檔輸出入.

Slides:



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

单元二:面向对象程序设计 任务二:借书卡程序设计.
第四章 类、对象和接口.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
项目6 通用堆栈.
計算機程式語言實習課.
檔案處理.
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
第一章 面向对象程序设计.
第二章 JAVA语言基础.
File Access 井民全製作.
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
Ch08 基本輸出入與檔案處理 物件導向系統實務.
第十三章 網路檔案傳遞(File Transition)
第9章 例外與檔案處理 9-4 檔案與資料夾處理 9-5 Java的輸入/輸出串流 9-6 檔案的讀取與寫入.
第7章 输入输出处理.
程式設計實作.
第5章 异常处理 王德俊 上海交通大学继续教育学院.
第3章 分布式文件系统HDFS (PPT版本号:2017年2月版本)
例外處理(Exception Handling)
Java 的例外與輸入出檔案處理 Jing Ming Huang.
JAVA vs. SQL Server 建國科技大學 資管系 饒瑞佶 2013/4 V1.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
Java基础 JavaSE异常.
Multithread 多執行緒 I/O Lecturer:楊昌樺.
JAVA 程式設計與資料結構 第六章 輸出與輸入.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
Java 程式設計 講師:FrankLin.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Java程式概觀.
程式設計實作.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
類別(class) 類別class與物件object.
Java语言程序设计 第五部分 Java异常处理.
剪貼簿.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
安裝JDK 安裝Eclipse Eclipse 中文化
摩擦力.
Java 程式設計 講師:FrankLin.
第 十二 章 C# 中的文件处理.
异常及处理.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
中文缺字在數位典藏系統之應用 ~網頁缺字處理技術
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
P2P聊天工具.
小太陽兒童人文藝術學院兒童畫展 地點:住院大樓9F、11F外走道( )
第一單元 建立java 程式.
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
JAVA 程式設計 資訊管理系 - 網路組.
輸入&輸出 函數 P20~P21.
團體衛生教育護理創意競賽 報告者:護理科 計畫主持人邱馨誼講師
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
挑戰C++程式語言 ──第7章 輸入與輸出.
Review 1~3.
第二章 Java基本语法 讲师:复凡.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
第二章 Java基础语法 北京传智播客教育
Unix指令4-文字編輯與程式撰寫.
InputStreamReader Console Scanner
Presentation transcript:

王豐緒 銘傳大學資訊工程學系 問題:JAVA 二元檔輸出入

問題基本資訊 標題 問題描述 目的 版本:2011/08/05 提示 二元檔案輸出入 給一個圖型檔,讀取其內容之後,以位元組的方式存到另一個文字檔案上(格式如附件!)。此外,並可提供複製功能。 目的 練習二元檔案輸出入 版本:2011/08/05 提示 請以UML圖型繪製本問題的物件模型 以JAVA實作程式

輸出格式 十六進位內容 字元符號內容 47 49 46 38 39 61 0A 00 0A 00 G I F 8 9 A 十六進位內容 字元符號內容 47 49 46 38 39 61 0A 00 0A 00 G I F 8 9 A F7 00 00 00 00 00 80 00 00 00 ? ? 80 00 80 80 00 00 00 80 80 00 ? ? ? ? ? 80 00 80 80 80 80 80 C0 C0 C0 ? ? ? ? ? ? ? ? ? FF 00 00 00 FF 00 FF FF 00 00 ? ? ? ? 00 FF FF 00 FF 00 FF FF FF FF ? ? ? ? ? ? ? FF 00 00 00 00 00 00 00 00 00 ? 10個bytes

問題分析:掌握領域知識 問題:給一個圖型檔,讀取其內容之後,以位元組的方式存到另一個文字檔案上(格式如附件!)。此外,並可提供複製功能。 學習單1:請同學整理相關領域知識 1. JAVA 二元檔案輸出入相關知識 2. String.format()指令

物件模型 學習單2:請同學根據問題描述,尋找適當的物件模型 給一個圖型檔,讀取其內容之後,以位元組的方式存到另一個文字檔案上(格式如附件!)。此外,並可提供複製功能。 名詞 檔案名稱 檔案內容

ImageFileAnalysis類別 資料成員 功能成員 private byte[] content; private String filename ; 功能成員 public void readContent() :讀取檔案內容 public void copyContent(String filename) :複製檔案內容 public void analyzeContent(String result_file_name) :以不同格式顯示檔案內容並儲存到文字檔中 建構元: ImageFileAnalysis(String filename)

學習單3: JAVA Code

學習任務 請利用Jblue撰寫本問題的JAVA Code,並且進行測試

ImageFileAnalysis類別 import java.io.*; import java.util.*; public class FileTokenizer { private byte[] content; private String filename ; public ImageFileAnalysis(String filename) this.filename = filename; } public void readContent() try { BufferedInputStream fin =new BufferedInputStream( new FileInputStream(filename)); int len = fin.available(); //取得檔案大小 content = new byte[len]; fin.read(content); fin.close(); } catch (Exception e) { e.printStackTrace();

ImageFileAnalysis類別 public void copyContent(String filename) { try { BufferedOutputStream fout = new BufferedOutputStream(new FileOutputStream(filename)); fout.write(content); fout.close(); } catch (Exception e) { e.printStackTrace(); }

ImageFileAnalysis類別 public void analyzeContent(String result_file_name) { try { PrintWriter ao = new PrintWriter(new BufferedWriter(new FileWriter(result_file_name))); ao.println(" 十六進位內容 \t 字元符號內容"); int len = content.length; for (int i=0; i< len; ){ if ( (i % 10) == 0) ao.println(); //換行 for (int k=0;k<10;k++) { if ((i+k)< len) { ao.print( String.format("%02X",content[i+k])); ao.print(' '); }else { ao.print(" "); } } ao.print('\t'); if (i<len) { ao.print( String.format("%C",(char)content[i+k])); i++; } } } ao.close(); } catch (Exception e){ e.printStackTrace();

反思(1/3) 學習單4:請同學進行學習反思,你從此問題學到什麼? 如何讀取二元檔案 如何複製二元檔案 如何將二元資料以不同格式顯示

延伸學習 請同學列舉其它與本問題相關的學習 String.format() 分析其他相關圖型檔案資料

範例:二元檔輸入 FileInputStream BufferedInputStream 二元檔 available() read(byte[]) 取得檔案大小 讀取資料到陣列

BufferedOutputStream 範例:二元檔輸出 二元檔 FileOutputStream BufferedOutputStream write(byte[]) 寫入資料

String.format() 可依照某種格式顯示字串內容 例子 (請參閱: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax) 例子 String.format("%,d", 1234);  1,234 String.format("%05d", 1234);  01234 String.format("%02X“, 10);  0A String.format("%C“, 48);  0