public ResultInfo saveCheckPoint(List<MultipartFile> testCaseFile, String questionId, Double questionScore) {
ResultInfo resultInfo = new ResultInfo();
System.out.println("文件个数:" + testCaseFile.size());
// 判断文件个数是否为偶数
// 是偶数则继续,不是则提示错误
if (testCaseFile.size() % 2 == 0) {
// 设置数组存放文件名
String[][] names = new String[testCaseFile.size()][2];
// 创建数组存放匹配文件
MultipartFile[][] multipartFiles = new MultipartFile[testCaseFile.size() / 2 + 1][2];
// 遍历获得的文件
for (int i = 0; i < testCaseFile.size(); i++) {
// 获取文件名
String fileName = testCaseFile.get(i).getOriginalFilename();
System.out.println("文件名:" + fileName);
// 截取文件名
String[] splitName = fileName.split("-");
// 放入数组中
// 存放文件类型
names[i][0] = splitName[0];
System.out.println("类型:" + names[i][0]);
// 存放文件后缀
names[i][1] = splitName[1].substring(0, splitName[1].indexOf('.'));
System.out.println("后缀:" + names[i][1]);
}
// 遍历数组名,看是匹配
// m:input的后缀,n:output的后缀
int m = 0;
int n = 0;
for (int i = 0; i < testCaseFile.size(); i++) {
if (names[i][0].equals("input"))
m = m + Integer.parseInt(names[i][1]);
else if (names[i][0].equals("output"))
n = n + Integer.parseInt(names[i][1]);
}
// 判断输入用例和输出用例是否相同
if (m == n) {
// 创建用例类
CheckPoint checkPoint = new CheckPoint();
// 循环
for (int i = 0; i < testCaseFile.size(); i++) {
if (names[i][0].equals("input")) {
// 输入文件
System.out.println(names[i][1]);
multipartFiles[Integer.parseInt(names[i][1])][0] = testCaseFile.get(i);
} else {
// 输出文件
multipartFiles[Integer.parseInt(names[i][1])][1] = testCaseFile.get(i);
}
}
for (int i = 1; i < testCaseFile.size() / 2 + 1; i++) {
try {
// 创建输入文件读入流
InputStream inputStream = multipartFiles[i][0].getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// 读并放到String中
String input = null;
String is;
while ((is = bufferedReader.readLine()) != null) {
if (input == null) {
input = is;
} else
input = input + "\r\n" + is;
}
checkPoint.setInput(input);
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
// 创建输出文件读入流
try {
InputStream inputStream1 = multipartFiles[i][1].getInputStream();
InputStreamReader inputStreamReader1 = new InputStreamReader(inputStream1, "UTF-8");
BufferedReader bufferedReader1 = new BufferedReader(inputStreamReader1);
// 读并放到String中
String output = null;
String os;
while ((os = bufferedReader1.readLine()) != null) {
if (output == null) {
output = os;
} else
output = output + "\r\n" + os;
}
checkPoint.setOutput(output);
bufferedReader1.close();
} catch (IOException e) {
e.printStackTrace();
}
checkPoint.setCpId(UUIDUtils.getUUID());
checkPoint.setQuestionId(questionId);
checkPoint.setItemScore(questionScore / testCaseFile.size() * 2);
// 保存
checkPointDao.save(checkPoint);
resultInfo.setResultCode(ResultInfo.RESULT_CODE_SUCCESS);
}
} else {
resultInfo.setResultCode(ResultInfo.RESULT_CODE_ERROR);
// 测试用例不匹配
resultInfo.setResultMessage(propertiesUtils.getTestCaseError());
}
} else {
resultInfo.setResultCode(ResultInfo.RESULT_CODE_ERROR);
// 测试用例不匹配
resultInfo.setResultMessage(propertiesUtils.getTestCaseError());
}
return resultInfo;
}
}
springboot多文件上传
猜你喜欢
转载自blog.csdn.net/zyp1376308302/article/details/81161535
今日推荐
周排行