2013-03-05 94 views
1

我想出了一個想法,爲我的學校製作一個程序,教師在那裏輸入問題和答案A,B,C,D等,以及何時完成創建一個jar文件,這將是實際的測試程序。現在我知道如何製作課程,以收集教師提供的所有數據,但是我不知道如何繼續。我的想法是,老師的jar會和示例中的'test jar'(其他問題和答案存儲在它的變量中)在同一個文件夾中,當老師準備好時,他們的jar會簡單地編輯'test jar的變量,那麼他們可以給學生提供'測試罐',但我不知道如何從另一個罐子編輯jar文件的代碼。我該如何解決這個問題? 在此先感謝!Java,我該如何製作一個罐子來編輯另一個罐子

+3

從輸入jar中生成一個輸出文件,然後將該文件導入到其他jar中以供使用。 – 2013-03-05 18:47:29

+0

是的,這聽起來不錯,但你可以將我重定向到一個關於如何將文件導入準備.jar的源文件? – vejmartin 2013-03-05 18:50:27

回答

1

基本上一個jar只是一個Zip文件。

Java提供了通過位於

java.util.zip

包的類型ZIP壓縮文件的良好支持。

你的代碼會是這樣的:

ZipOutputStream outStream = new ZipOutputStream(new FileOutputStream(zipFileName)); 

// Add a zip entry to the output stream 
outStream.putNextEntry(new ZipEntry(myEntryName)); 

// add data to your entry by writing to outStream 
...... 
...... 
//Close zip entry and file streams 
outStream.closeEntry(); 

而且全example.

+0

記得在使用java.util.zip的情況下使用Java 7。在之前的版本中有一些令人討厭的bug(帶有編碼)。 – mschenk74 2013-05-27 07:11:57

0

如果你試圖使測驗具有可定製的問題和答案,我建議你使用一個文本文件來存儲選項(問題和答案以及可能的問題類型,如多項選擇或輸入一個值或選擇一個)。

對於文件的格式可以使用xml或者簡單地使用java.util.Properties,使用它的存儲和加載來保存到文件中。

你的屬性可以是「totalNumberQuestions」,「問題1」「questionType1」「question1option1」等

現在,在你的主程序,查找文件: *如果progrtam開始args.length> 0找與ARG [0]在一個單獨的嘗試捕捉一個文件,這樣即使不存在,你顯示一個錯誤信息並繼續

  • 如果不能在同一文件夾中找到或無參數稱爲「data.txt中」你程序含義: 文件f =新文件(「data.txt」); 如果(f.exists()){//讀取inpout流

  • 否則從罐子getClassLoader()的類加載器。getResourseAsStream(java.lang.Class中

查找實際的函數名

通過這種方式,用戶可以使用第二個jar創建data.txt,然後將它與提問問題的主jar進行打包,或者將其保存在同一個文件夾中,或者在啓動程序時將其作爲參數傳遞。

您可以使用jar命令

jar ufMv quiz.jar data.txt 

要使用的jar新的ZIP重新包裝一個jar:

jar cvfM quiz.jar data.txt yourPackage.*.class 
0

你可以更好地彌補的問題和答案的數據庫。教師程序將在數據庫中寫入,孩子的程序將讀取數據庫。