我想出了一个想法,为我的学校制作一个程序,老师在那里输入问题并回答A,B,C,D等等。当它完成时创建一个jar文件,这将是实际的测试程序。现在我知道如何使程序达到收集教师的所有数据的程度,但后来我不知道如何继续。我的想法是,教师的jar将与示例准备好的'测试jar'在同一文件夹中(其他问题和答案存储在其变量中),当教师准备好时,他们的jar将简单地编辑'测试jar的变量和那么他们可以给学生们提供“测试罐”,虽然我不知道如何从另一个罐子里编辑一个jar文件的代码。我怎么处理这个? 提前谢谢!
答案 0 :(得分:1)
基本上jar只是一个Zip文件。
Java通过
中的类型为zip存档提供了很好的支持java.util.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.
答案 1 :(得分:0)
如果您尝试使用可自定义的问题和答案进行测验,我建议您使用文本文件来存储选项(问题和答案以及可能的问题类型,例如多项选择或输入valie或选择一个)。
对于文件格式可以使用xml或只使用java.util.Properties,使用其存储和加载来保存到文件。
您的属性可以是“totalNumberQuestions”,“question1”“questionType1”“question1option1”等
现在在您的主程序中,查找文件: *如果progrtam以args.length>开头0在单独的try catch中查找带有arg [0]的文件,所以即使不存在,也会显示错误消息并继续
,或者在与程序相同的文件夹中没有名为“data.txt”的args: 文件f =新文件(“data.txt”); if(f.exists()){//读入inpout stream
来自jar中的类加载器getClassLoader()。getResourseAsStream(查找java.lang.Class中的实际函数名称
这样一来,用户就可以使用你的第二个jar来创建他们的data.txt,然后用主要的jar包装它来询问问题,或者只是将它保存在同一个文件夹中,或者在启动程序时将其作为参数传递。 / p>
您可以使用jar命令重新打包jar
jar ufMv quiz.jar data.txt
使用jar创建一个新的zip:
jar cvfM quiz.jar data.txt yourPackage.*.class
答案 2 :(得分:0)
您可以更好地组成问题和答案的数据库。教师程序将在数据库中写入,孩子的程序将读取数据库。