2011年7月29日 星期五

Rhino運用Java物件的方式

這陣子花了點時間試著用Rhino開發程式,雖然還沒有很習慣Rhino與Java互動的方式,但在一連串的錯誤嘗試與測試過程中,發現Rhino還滿符合我想要的工具。熟悉JavaScript程式語言語法是最主要目的,但如果可以實際用來解決日常的工作需求,這樣就不算白費時間了。
有關Rhino使用Java packages、classes的方式,可以參考官網Scripting Java的說明。透過運用Java物件,就可以採用JavaScript的語法處理本機電腦上許多的工作(就像Windows提供JScript語言的方式)。若是將Java的JVM(Java Virtual Machine)當作一項優點,也許在「理想狀況」下,也可以將Rhino平臺所撰寫的JavaScript程式達到Wirte Once Run Anywhere的目標。

底下的程式碼就是應用Java物件進行檔案的讀/寫功能:
/**
 *
 * Rhino建立Java物件之測試
 *
 * @author ace
 *
 * @version 2011/07/15 v0.1 初始版本。
 *
 * @see <a href="http://www.mozilla.org/rhino/ScriptingJava.html">Scripting Java</a>
 * @see <a href="https://developer.mozilla.org/en/Scripting_Java">Scripting Java</a>
 * @see <a href="https://developer.mozilla.org/en/JavaScript/Reference/Statements/try...catch">try...catch</a>
 * @see <a href="http://www.javascriptkit.com/javatutors/trycatch.shtml">Handling runtime errors in JavaScript using try/catch/finally</a>
 * @see <a href="http://www.javadb.com/read-from-file-using-bufferedreader">Read from a file using a BufferedReader</a>
 * @see <a href="http://www.javadb.com/write-to-file-using-bufferedwriter">Write to file using a BufferedWriter</a>
 *
 * @description
 *
 */

var strSourceFile = new String("C:\\Dev-Rhino\\joke.txt");
var strTargetFile = new String("C:\\Dev-Rhino\\messages.txt");

// 讀取檔案內容。
var filSource = new java.io.File(strSourceFile);
var BufferedReader = new java.io.BufferedReader(new java.io.FileReader(SourceFile.getAbsolutePath()));

try {
    var strTemp = new String();

    while ((strTemp = BufferedReader.readLine()) != null) print(strTemp);
}
catch (e) {
    print("執行過程有誤,錯誤訊息:" + e.description);
}
finally {
    if (BufferedReader != null) {
        BufferedReader.close();
    }
}

// 資料寫入檔案。
var BufferedWriter = new java.io.BufferedWriter(new java.io.FileWriter(strTargetFile));

try {
    // Start writing to the output stream
    BufferedWriter.write("執行rhino‧‧‧");
    BufferedWriter.newLine();
    BufferedWriter.write("寫入測試資料");
}
catch (e) {
    print("執行過程有誤,錯誤訊息:" + e.description);
}
finally {
    if (BufferedWriter != null) {
        BufferedWriter.flush();
        BufferedWriter.close();
    }    
}
說真的,一開始撰寫時很不習慣,總覺得寫起來挺怪的;但其實只要把Java物件定義到JavaScript的一個變數(物件?),接下去的寫法就都可以JavaScript的語法來處理,就比較不會混餚了。也因為這樣‧‧‧變數也會宣告的滿勤快的XD

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...