Chapter 8 檔案.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機程式語言實習課.
翰林版國文第三冊第六課 《迢迢牽牛星》 設計者:郭宜幸.
第 7 章 文 件.
檔案與資料存取.
TQC+ 物件導向程式認證-JAVA.
五-4 台灣的生活禮俗 組員:603 15號 黃醴萬 6號 吳家熙 5號 楊証傑 11號 李偉新.
Chapter 4 流程控制.
光隆家商 優質化計畫 簡報 校 長 楊瑞明 教務主任 高美麗
File Access 井民全製作.
第9章 例外與檔案處理 9-4 檔案與資料夾處理 9-5 Java的輸入/輸出串流 9-6 檔案的讀取與寫入.
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
題目:十六對一多工器 姓名:李國豪 學號:B
Chapter 5 迴圈.
Chapter 模組 台灣師範大學數學系 黃聰明.
Chapter 3 輸出入及宣告.
C Shell Programming.
Visual Basic 程序设计 第12章文件处理
第五章 shell 编程 shell 编程的基本过程分为三步: 1. 建立 shell 文件 包含任意多行操作系统命令或shell命令的文本
JAVA 程式設計與資料結構 第十二章 JAR File.
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
JAVA 程式設計與資料結構 第六章 輸出與輸入.
C 程式設計— 控制敘述 台大資訊工程學系 資訊系統訓練班.
SQL Stored Procedure SQL 預存程序.
C 語言簡介 - 2.
第十三章 檔案.
第八讲 MATLAB图形用 户界面设计.
安裝JDK 安裝Eclipse Eclipse 中文化
Chapter 2 Basic Elements of Fortran
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A.
|13 檔案資料讀寫.
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
雲端計算.
本章中將會更詳細地考慮有關重複的概念,並且會 介紹for和do…while等兩種用來控制重複的敘述 式。 也將會介紹switch多重選擇敘述式。 我們會討論直接和迅速離開某種控制敘述式的 break敘述式,以及用來跳過重複敘述式本體剩餘 部份的continue敘述式。 本章會討論用來組合控制條件的邏輯運算子,最後.
第4章 常量和变量 常量和变量都是程序中预留的用于保存数据的内存空间。常量的值在程序运行过程中始终不会发生变化。而变量的值在程序的运行过程中是可以变化的。在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)。按用途,又可以分数值型、字符型和逻辑型三种。相应的常量和变量也可以分为这三种。本章将按照用途介绍常量和变量的基本概念。
第10章 檔案與資料夾處理 10-1 檔案的基礎 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫 10-4 檔案與資料夾處理.
暴力、草莽、土野、情色、權慾 —華西街的成人童話
第七章 文件 本章重点 7.1 文件管理控件 7.2 文件处理 7.3 练习.
第一單元 建立java 程式.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
Redirection 概念說明 input redirection: 將資料“再”輸入到某一命令去做處理 (用<符號)
刑事訴訟法 不受理.
第六章 shell 程序调试 一. 程序执行状态跟踪 程序: -n 读取命令, 但不执行. 主要用于跟踪程序流程是
软件工程 第四章 软件设计 软件过程设计技术与工具.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
期末考.
如何使用Gene Ontology 網址:
Flash 8:開口中 從Y:\ 複製『開口中.fla』到 D:\ 更改名稱為:s3x99 (你的班號) 雙按開啟檔案 2019年5月7日
File Input and Output Chap. 11: 施威銘的書 Chap. 7: K&R.
挑戰C++程式語言 ──第7章 輸入與輸出.
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
1.3操作系统提供的服务和用户接口 操作系统提供的用户接口 程序接口与系统调用 操作接口与系统程序
MiRanda Java Interface v1.0的使用方法
第10章 檔案系統 (file system).
基本指令.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
計算機程式 Visual BASIC 程式設計
選擇性結構 if-else… switch-case 重複性結構 while… do-while… for…
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A.
資料表示方法 資料儲存單位.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
Fortran 实用编程 系列视频教程 Fortran Coder 研讨团队
Unix指令4-文字編輯與程式撰寫.
Develop and Build Drives by Visual C++ IDE
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

Chapter 8 檔案

8-0 檔案基本概念 檔案讀取方式 循序讀取: 對一個檔案在讀入或者是寫出時,我們只能從頭開始,一步步地向下來一筆一筆地讀取資料。 直接讀取: 對一個檔案在讀入或者是寫出資籿時,我們可以任意、直接地跳躍到檔案的任何一個位置上來從事讀取的工作。

8-0 檔案基本概念 檔案儲存模式 文字檔: 把所有的資料都用我們人眼可以明白理解的字元符號來做儲存。優點:易懂,可直接修改。 二進位檔: 直接把資料在電腦記憶中的儲存情形(也就是二進位碼)直接寫入檔案中。優點:讀取較快速、省空間。

8-1 The open statement 程式說明 設定參數說明 OPEN(unit = int_expr, file = char_expr, status = char_expr, action = char_expr, iostat = int_var) 設定參數說明 unit = int_expr 開啟一個檔案時要給定這個檔案一個讀取的編號,以後使用 write, read時使用這個編號就可以對這個檔案來讀寫了 int_expr = 數字 → 最好避開1, 2, 5, 6 2, 6是指內定的輸出位置,也就是螢幕 1, 5則是指內定的輸入位置,也就是鍵盤 開啟檔案 開啟檔案的設定參數

8-1 The open statement 設定參數說明 file = char_expr status = char_expr 用來指定開啟檔案的名稱。 char_expr = 字串 →包括主檔名與副檔名 Ex. "a.dat" status = char_expr ‘New’, ‘Oid’, ‘Scratch’ or ‘unknown’用來標示是要開啟一個新檔 或是已經存在的舊檔 char_expr = ‘New’ →這個檔案原本不存在,是第一次開啟 ‘Oid’ →這個檔案原本就已經存在

8-1 The open statement 設定參數說明 action = char_expr iostate = int_var ‘read’, ‘write’, ‘readwrite’ 表示檔案用來讀取還是寫入 char_expr = ‘readwrite’ → 表示所開啟的檔案可以用來讀取及 寫入,這是內定值 ‘read’ →表示所開啟的檔案只能用來讀取資料 ‘write’ →表示所開啟的檔案只能用來寫入資料 iostate = int_var 表示檔案開啟的狀態,int_var為一個整數變數,lostate會給變數 一個值 Int_var > 0 →表示讀取動作發生錯誤 = 0 →表示讀取動作正常 < 0 →檔案終了

8-1 The open statement 設定參數說明 access = char_expr position = char_expr ‘sequential’, ‘direct’設定讀取檔案的方式 char_expr = ‘sequential’ →讀取檔案的動作會以“循序”的方法 來做讀取 ‘direct’ →讀取檔案的動作可以任意指定位置 position = char_expr ‘asis’, ‘rewind’, ‘append’設定檔案開啟時的讀取位置 char_expr = ‘asis’ →表示檔案開啟時的讀取位置,不特別指定 ,這是內定值 ‘rewind’ →表示檔案開啟時的讀取位置移到檔案的 開頭處 ‘append’ →表示檔案開啟時的讀取位置移到檔案 的結尾處

8-1 The open statement 範例 opening a file for input opening a file for output < Ex. 程式片段> integer :: ierror open (unit = 8, file = ‘a.dat', status = 'OLD', action = 'read', iostat = ierror) < Ex. 程式片段> integer ::n_unit, ierror character(len = 7) :: name n_unit = 25 name = 'out.dat' open (unit=n_unit, file=name, status='new', action='write', iostat=ierror)

8-1 The open statement 範例 opening a scratch file < Ex. 程式片段> open (unit = 12, status = 'scratch', iostat= ierror)

8-3 reads and writes to disk files 程式說明 read(3, *, iostat = status) value 要輸入檔案的編號 表示檔案開啟的狀態,status為一個整數變數,iostat會給變數一個值 status > 0表示讀取動作發生錯誤 status = 0表示讀取動作正常 status < 0表示檔案終了

8-3 reads and writes to disk files 範例 read the values of variables x, y and z from the file “input.dat” write the values of variables x, y and z to the file output.dat < Ex. 程式片段> open(unit = 8, file = 'input.dat', status = 'old', iostat = ierror) read(8, *) x, y, z < Ex. 程式片段> open(unit = 9, file = 'output.dat', status = 'new', iostat = ierror) write(9, 100) x, y, z 100 Format('X =', F10.2, 'Y=', F10.2, 'Z=', F10.2)

8-2 The close statement 程式說明 close (close_list) 關閉檔案 要關閉檔案的編號

8-3 reads and writes to disk files < Ex. 完成程式> program read implicit none character (len =20) :: filename integer :: nvals = 0 integer :: status real :: value ! Get the file name and echo it back to the user. write(*,*) 'Please enter input file name:' read(*,*) filename write(*,10) filename 10 format(1x, 'The input file name is : ', A) <接下頁>

8-3 reads and writes to disk files < Ex. 完成程式> ! Open the file and check for errors on open open(3, file = filename, status = 'old', action = 'read', iostat = status) openif: If(status == 0) then ! open was OK. Read values readloop: do read(3, *, iostat = status) value if(status /= 0) Exit nvals = nvals + 1 write(*, 20) nvals, value 20 format(1x, 'Line', I6, ': Value = ', F10.4) end do readloop <接下頁>

8-3 reads and writes to disk files < Ex. 完成程式> ! The while loop has terminated. Was it because of a read error or ! because of the end of the input file? readif: if(status > 0) then write(*, 30) nvals + 1 30 format(1x, 'An error occurred reading line', I6) else write(*, 40) nvals 40 format(1x, 'End of file reached. There were ', I6, 'values in the file.') end if readif <接下頁>

8-3 reads and writes to disk files < Ex. 完成程式> else openif write(*, 50) status 50 format(1x, 'Error opening file: IOSTAT = ',I6) end if openif close(3) end program read < Ex. 執行結果> 沒有input.dat的檔案 Please enter input file name: input.dat <輸入input.dat [ENTER] > The input file name is : input.dat Error opening file: IOSTAT = 2

8-3 reads and writes to disk files < Ex. 執行結果> input.dat檔案內容 12 34 56 78 90 < Ex. 執行結果> Please enter input file name: input.dat <輸入input.dat [ENTER] > The input file name is : input.dat Line 1: Value = 12.0000 Line 2: Value = 34.0000 Line 3: Value = 56.0000 Line 4: Value = 78.0000 Line 5: Value = 90.0000 End of file reached. There were 5values in the file.

8-3 reads and writes to disk files 直接存取檔的操作 把檔案的空間、內容事先加以分割成一個個同樣大小的小 區塊,並且把這些區塊按順序加以編號。而讀寫檔案時, 要先指定檔案讀寫位置要在那一個區塊上,才能進行讀寫 的工作。 直接存取檔可以任意在檔案的任何一個地方來進行讀寫的 工作。

8-3 reads and writes to disk files < Ex. 完成程式> “兄弟象”在一場棒球比賽中的打擊者打擊率依棒次順序列表在檔案List中如下: 3.12 2.98 3.34 2.86 2.54 2.78 2.23 2.56 請寫一個可以由棒次來查尋打者打擊率的程式。 <接下頁>

8-3 reads and writes to disk files 在DOS作業系統中,文件檔中每一行的行尾都有兩個看不見的符號用來代表一行文字的結束。所以真正一行的長度就是"一行文字字元的數量再加上2"。在List檔中每行長度 = 4 + 2 = 6 < Ex. 完成程式> program ex0801 implicit none character(len = 20), parameter :: input = 'List' integer, parameter :: players = 9 integer :: player integer, parameter :: rec_length = 6 real :: hit_rate open(10, file = input,form = 'formatted',access = 'direct',recl = rec_length) do while (.true.) write(*,*) 'Number:' read(*,*) player <接下頁> 在unix中,每一行的行尾只需一個結束符號,所以一行的長度就是"一行文字字元的數量再加1" 開啟直接讀取檔時,open敘述中的access = 'direct'及recl後的數值不能省略。這個數值是用來切分出檔案區塊大小使用的

8-3 reads and writes to disk files < Ex. 完成程式> if(player < 1 .or. player > players) exit read(10, fmt = '(F4.2)', rec = player) hit_rate write(*, 100) 'Number ', player, 'hit_rate = ', hit_rate 100 format(1X, A8, I2, A10, F5.2) end do stop end program ex0801 < Ex. 執行結果> TEST

8-3 reads and writes to disk files < Ex. 完成程式> 依選手的背號順序,輸入選手的打擊率 program ex0802 implicit none character(len = 20), parameter :: input = 'newList' integer, parameter :: players = 9, rec_length = 6 integer :: player real :: hit_rate open(10,file = input,form = 'formatted',access = 'direct', & recl = rec_length) do while (.true.) write(*,*) 'Hit Number:' read(*,*) player <接下頁>

8-3 reads and writes to disk files < Ex. 完成程式> if(player < 1 .or. player > players) exit read(10, fmt = '(F4.2)', rec = player) hit_rate write(*,*) 'Input hit rate:' read(*,*) hit_rate write(10, fmt = '(F4.2)', rec = player) hit_rate end do stop end program ex0802 < Ex. 執行結果> TEST

8-3 reads and writes to disk files 二進位檔的操作 二進位檔:肉眼無法明白了解之亂碼檔 < Ex. 完成程式> 把輸入棒球選手打擊率的程式,改成使用二進位檔來運作: program ex0803 implicit none character(len = 20), parameter :: output = 'List.bin' integer, parameter :: players = 9, rec_length = 4 integer :: player real :: hit_rate open(10,file=output,form= 'unformatted',access= 'direct',& recl= rec_length) <接下頁>

8-3 reads and writes to disk files < Ex. 完成程式> do while (.true.) write(*,*) 'Hit Number :' read(*,*) player if (player < 1 .or. player > players) exit read(*,*) hit_rate write(10, rec = player) hit_rate end do stop end program ex0803 < Ex. 執行結果> TEST