1. 程式人生 > >Unmi 學習 Groovy 之檔案操作

Unmi 學習 Groovy 之檔案操作

一:Java 與 Groovy 讀檔案操作比較

Groovy 對 java.io.File 進行了擴充套件,增加了一些接受閉包引數和簡化檔案操作的方法。作為對比,我們還是先來看看 java 中讀取檔案的兩種常方法,分別是行讀取和位元組緩衝區讀取:

從上面可看到,採用 Java 傳統方式來讀取檔案內容,不僅程式碼行多,而且還必須自己用 try/catch/finally 來處理異常和資源的關閉。現在馬上來看看 Groovy 完成以上工作的程式碼是怎麼的,只要一行程式碼:

不需要 Reader 或 Inputstream、不用關閉語名和異常處理。我們所要做的就是編寫業務邏輯,剩下的工作 Groovy 會幫你料理的。當然,如果檔案找不到,也是會出現 java.io.FileNotFoundException 異常的。你可以捕獲這個要處理的異常,但仍然不必擔心資源的釋放。


至於寫檔案,Groovy 的表現也比較搶眼。下面我們來體驗一下 Groovy 對 java.io.File 擴充套件的幾個方法的使用。關於 File 的所有擴充套件方法的使用請參考 Groovy JDK -- http://groovy.codehaus.org/groovy-jdk/ 中 java.io.File(http://groovy.codehaus.org/groovy-jdk/java/io/File.html) 部分。


二:Groovy 對 java.io.File 擴充套件方法舉例

1. eachLine -- 開啟和讀取檔案的每一行


2. readLines -- 其作用基本與 eachLine 相同,但它不接受閉包為引數,而是把檔案行讀到一個 List 中


3. splitEachLine -- 讀取檔案的每一行,然後對行以指定分隔符分割成陣列。不用再多說了,這個方法對處理 CSV 檔案那可是相當的高效。


4. eachByte -- 處理二進位制檔案,以位元組級訪問檔案,這個方法相當於 eachLine() 方法。


5. readBytes -- 自然,處理二進位制檔案,以位元組級訪問檔案,這個方法相當於 readLines() 方法了


6. write -- Groovy 用這個方法寫檔案真是太直觀了


以上使用了三重引用語法,其中的文字保留格式的寫入到檔案中。注意上面寫法在檔案首尾都會有一個空行,除非起始和結束字元都要緊貼 """;還有上面方法寫的檔案用詞本開啟會是擠在一行,用 editplus 開啟是多行,因為它採用的是 linux 下的 /n 換行,而不是 windows 下的 /r/n 換行。、

7. append -- 與 write 覆寫檔案不同,append 是在檔案後追加內容

8. eachFile -- 功能上類似 java.io.File 的 listFiles() 方法。用來列舉路徑中的每個檔案(包括目錄),傳給閉包處理


9. eachFileRecurse -- 以深度優先的方式遞迴遍歷路徑,列出檔案(包括目錄),傳給閉包處理


10. …… 再重複一下,其他 Groovy 對 java.io.File 的擴充套件方法請參考 http://groovy.codehaus.org/groovy-jdk/java/io/File.html。如 eachDir()、eachDirMatch()、eachDirRecurse()、eachFileMatch()、filterLine()、newInputStream()、newOutputStream()、newReader()、newPrintWriter()、withInputStream()、withOutputStream()、withReader()、withPrintWriter() 等等。還要留意一下有一些方法是可以指定字符集的。


參考:1. 《Java 指令碼程式語言、框架與模式》第 4 章

相關推薦

Unmi 學習 Groovy 檔案操作

一:Java 與 Groovy 讀檔案操作比較 Groovy 對 java.io.File 進行了擴充套件,增加了一些接受閉包引數和簡化檔案操作的方法。作為對比,我們還是先來看看 java 中讀取檔案的兩種常方法,分別是行讀取和位元組緩衝區讀取: //--BufferedRe

C++ 學習筆記——檔案操作檔案

1. 檔案的概念 對於使用者來說,常用到的檔案有兩大類:程式檔案和資料檔案。而根據檔案中資料的組織方式,則可以將檔案分為 ASCII 檔案和二進位制檔案。 ASCII 檔案,又稱字元檔案或者文字檔案,它的每一個位元組放一個 ASCII 程式碼,代表一個字元。 二進位制檔案,又稱內部格式檔案或位元

Groovy 檔案操作

一:Java 與 Groovy 讀檔案操作比較 Groovy 對 java.io.File 進行了擴充套件,增加了一些接受閉包引數和簡化檔案操作的方法。作為對比,我們還是先來看看 java 中讀取檔案的兩種常方法,分別是行讀取和位元組緩衝區讀取: 01.//--Bu

OC學習---檔案操作

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【Ansible學習】- 常用檔案操作模組copy模組

簡介 copy模組用於將本地或遠端機器上的檔案拷貝到遠端主機上。 模組引數 名稱 必選 預設值 可選值 備註 backup no no

《 mongodb 學習基本操作

pretty 就是 log style 操作 16px 如果 -s collect 一、創建數據庫和表 在bin目錄下 執行 mongo 進入mongodb 建庫 use demo1 創建數據庫,芒果語法裏,use 表示,如果當前有這個數據庫就會使用, 如果沒喲就創

node總結檔案操作系列(二)

接著上一篇部落格來啊,咱們繼續看非同步模式下關閉檔案的語法格式: fs.close(fd, callback) 引數描述如下: fd - 通過 fs.open() 方法返回的檔案描述符。 callback - 回撥函式,沒有引數。 例項如下: var

node總結檔案操作系列(一)

Node.js 提供一組類似 UNIX(POSIX)標準的檔案操作API,我們來看下Node 匯入檔案系統模組(fs)語法,如下: var fs = require("fs") Node.js 檔案系統(fs 模組)模組中的方法均有非同步和同步版本,例如讀取檔案內容的函式有非同步的 fs

Python學習筆記DAY4---檔案操作

        檔案的操作是一個程式語言必不可少的,Python也不例外,檔案的開啟使用了open()來實現。 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline

python基礎檔案操作和簡單的類

檔案操作 #檔案刪除 import os path=".\\data\\" for s in os.listdir(path): filename=path+s print(filename) # os.remove("test.txt") #檔案開啟 f=open('test.

python基礎檔案操作基礎

  Python基礎之檔案操作   1、檔案的開啟方式 讀檔案的方式有四種:   r:只讀   rb:二進位制讀取   r+:讀寫,先讀在寫,在檔案游標處接著寫   r+b:二進位制讀取資料,英文讀取英文,中文轉為二進位制   # #檔案操作,開啟一個檔

python 3 檔案操作

檔案操作 1.檔案處理的流程  1)開啟檔案,得到檔案控制代碼並賦值給一個變數 2)通過控制代碼對檔案進行操作 3)關閉檔案         能呼叫方法的一定是物件       

node學習七:檔案操作

檔案操作涉及到了nodejs設計思想中的非同步I/O(檔案操作、網路操作) 非同步程式設計: 非同步I/O input/output: 1、檔案操作 2、網路操作 在瀏覽器中也存在非同步操作: 1、定時任務 2、事件處理 3、Ajax回撥處理 js的執行時單執行緒的單執行緒存

python基礎檔案操作和函式

一、知識點 1.三元運算 a = 2 b = 3 val = 6 if a < b else 7 print(val) 2.檔案讀取 f = open(file='file.txt',mode='r',coding='utf-8') data = f.read() print(d

C語言檔案操作

一、開啟檔案 1、函式 fopen(path, type) 2、引數介紹 引數 型別 說明 備註 path 字串 檔案路徑 如”./h

python學習筆記基礎操作(五)字串格式化(1)%格式化

格式化基本格式 s = "i am %s ,i am %d years old ,and i like %s"%("haiyang",20,"zhu") print(s) #區分資料型別,無法自動在字串

python學習筆記基礎操作(五)字串格式化(2)format

format格式化 1,基本格式 #對於每一個大括號,在後面的引數中找到對應的引數插進來 #format操作類似於於將傳入的引數製成多個數據的資料結構元組或者字典,然後依照索引插入引數 s = "i a

python學習筆記基礎操作(六)生成器和迭代器

生成器總結 語法上和函式類似:生成器函式幾乎和常規函式一樣,不同的又兩點, 第一點是返回使用yield關鍵字,第二點是在連續邏輯內可以多次返回 這是yield的特點決定的,yield會記住函式執行的位

python檔案操作的幾種模式總結

      檔案操作的幾種模式: "w"                             #write ,清空寫,生成一

python檔案操作示例

    方法一: with open("e:\\gloryroad.txt","a+",encoding="utf-8") as file: file.write("------"+"\n") print(file.tell()) 備註:使用此方式操作檔案,可以不用寫close()