我在Java中有一个selenium测试脚本,可以读取和写入excel文件。问题是,如果文件已经打开,它就无法写入文件。我希望我的脚本在写入文件之前自动关闭文件,以防用户忘记关闭excel文件。
下面是打开excel文件以从中读取的代码,即使文件已经打开,我也没有问题从文件读取
// prepare excel file
FileInputStream file = new FileInputStream(new
File(r.CONFIG.getProperty("testCaseFile")));
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(6);
sheetmyWaitVar.until(ExpectedConditions.elementToBeClickable(By.id("ZipCodeEntry"))).sendKeys(sheet.getRow(row).getCell(2).getStringCellValue());
以下是写入excel文件的代码。如果用户在运行脚本之前忘记关闭excel文件,脚本将挂起。我试图找到一种方法来添加代码,这将在执行下面的代码之前关闭文件
//write random first name to the same file
sheet.getRow(row).getCell(4).setCellValue(randomFirstName);
//write test result to the same file
sheet.getRow(row).getCell(25).setCellValue(testResult);
//write confirmation to the same file
sheet.getRow(row).getCell(23).setCellValue(confirmation); //write the confirmation number in the excel file
//write premium to the same file
sheet.getRow(row).getCell(24).setCellValue(premium); //write premium in the excel file
//enter timestamp
sheet.getRow(row).getCell(27).setCellValue(r.timeStamp());
//enter environment
sheet.getRow(row).getCell(26).setCellValue(r.CONFIG.getProperty("environment"));
FileOutputStream outFile =new FileOutputStream(new File(r.CONFIG.getProperty("testCaseFile")));
workbook.write(outFile);
outFile.close();
答案 0 :(得分:1)
通常文件上的writeLock是独占的,因此为了获得它,文件上不应该有其他锁(由OS处理)。 我认为没有办法以编程方式解决这个问题。
为什么不将内容写入新文件?