Ошибка "файл уже используется"

Почему при записи FileWriter документ Word не открывается, а при записи FileOutputStream открывается?

Помогите, пожалуйста, нужен именно FileWriter.

Path link = Paths.get("C:\\Users\\Admin\\Desktop\\BBB.docx");

XWPFDocument docxModel = new XWPFDocument();
if (Files.exists(link)) {
    docxModel.createParagraph();
    String documentLine = docxModel.getDocument().toString();
    CTSectPr ctSectPr = docxModel.getDocument().getBody().addNewSectPr();
    XWPFParagraph bodyParagraph = docxModel.createParagraph();
    bodyParagraph.setAlignment(ParagraphAlignment.LEFT);
    XWPFRun paragraphConfig = bodyParagraph.createRun();
    XWPFDocument document = new XWPFDocument();
    XWPFParagraph paragraph = document.createParagraph();
    paragraphConfig.setItalic(true);
    paragraphConfig.setFontSize(20);
    paragraphConfig.setColor("170101");
    paragraphConfig.setFontSize(12);
    paragraphConfig.setText(numberandnames.toString());
    try {
        document.write(new FileOutputStream(new File("C:\\Users\\Admin\\Desktop\\BBB.docx")));
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    }

FileWriter

try {
    FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Admin\\Desktop\\BBB.docx");
    docxModel.write(outputStream);
    outputStream.close();
} catch (IOException ex) {
    throw new RuntimeException(ex);
}

FileOutputStream


Ответы (1 шт):

Автор решения: Vadik

Для того, чтобы освободить документ после работы программы, используйте метод close() у документа:

XWPFDocument document = new XWPFDocument();
// работа с документом
document.close();

Но если случится ошибка в программе, то документ все равно может остаться открытым, поэтому лучше использовать конструкцию try-with-resources:

try (XWPFDocument document = new XWPFDocument()) {
    // работа с документом
}
→ Ссылка