我想出了一个想法,为我的学校制作一个程序,教师在其中输入问题和答案 A、B、C、D 等,并在完成后创建一个 jar 文件,该文件将成为实际的测试程序。现在我知道如何使程序达到收集教师所有数据的程度,但是我不知道如何进行。我的想法是教师的 jar 将与示例就绪的“测试 jar”(其他问题和答案存储在其变量中)位于同一文件夹中,当教师准备好时,他们的 jar 将简单地编辑“测试 jar”的变量和然后他们可以将“测试 jar”给学生,尽管我不知道如何从另一个 jar 编辑 jar 文件的代码。我该如何处理?提前致谢!
3 回答
基本上,jar 只是一个 Zip 文件。
Java 通过位于
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();
还有一个完整的例子。
如果您尝试使用可自定义的问题和答案进行测验,我建议您使用文本文件来存储选项(问题和答案以及可能的问题类型,例如多项选择或输入一个值或选择一个)。
对于文件的格式可以使用xml或者干脆使用java.util.Properties,使用它的store和load来保存到文件中。
您的属性可以是“totalNumberQuestions”、“question1”“questionType1”“question1option1”等
现在在您的主程序中,查找一个文件: * 如果程序以 args.length > 0 开头,则在单独的 try catch 中查找带有 arg[0] 的文件,因此即使不存在,您也会显示错误消息并继续
如果在与您的程序相同的文件夹中找不到或没有名为“data.txt”的参数,则意味着: File f = new File("data.txt"); if(f.exists()){ //读取输入流
else 来自 jar getClassLoader().getResourseAsStream 中的类加载器(在 java.lang.Class 中查找实际函数名
这样,用户可以使用您的第二个 jar 来创建他们的 data.txt,然后将其与提出问题的主 jar 一起打包,或者简单地将其保存在同一个文件夹中,或者在启动程序时将其作为参数传递。
您可以使用 jar 命令重新打包 jar
jar ufMv quiz.jar data.txt
使用 jar 创建新的 zip:
jar cvfM quiz.jar data.txt yourPackage.*.class
You could better make up a database of the questions and answers. The teachers program will write in the database, the child's program will read the database.