這陣子花了點時間試著用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
沒有留言:
張貼留言