java 新建pdf_java-如何关闭PDF文件以重新创建它? (正在...

在Java应用程序中创建PDF文件时遇到问题,当尝试修改已打开的PDF文件时,出现'FileNotFoundException',提示文件被另一个进程使用。错误位于尝试使用FileOutputStream打开文件的代码行。为了解决这个问题,需要确保在操作PDF前关闭所有相关的流和资源。
摘要由CSDN通过智能技术生成

我有可以创建PDF文件的Java应用程序.因此,例如,我从程序中创建了一个简单的文件,并构建了代码以同时打开该文件.

因此,我创建了文件,看到了文件,然后就可以了.

如果要修改该文件,则必须关闭该文件然后重新创建它,如果不关闭该文件,则会出现此错误:

java.io.FileNotFoundException: Archivio_Etichette\_12-4-2015.pdf (Impossibile accedere al file. Il file è utilizzato da un altro processo)

at java.io.FileOutputStream.open(Native Method)

at java.io.FileOutputStream.(FileOutputStream.java:221)

at java.io.FileOutputStream.(FileOutputStream.java:171)

at com.mcsolution.easyMgmt.print.pdf.FoglioFattura.stampaEtichette(FoglioFattura.java:2215)

at Etichette.PanelBigliettiAdesivi.stampaEtichette(PanelBigliettiAdesivi.java:242)

at Etichette.PanelBigliettiAdesivi$1.actionPerformed(PanelBigliettiAdesivi.java:273)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)

at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)

at java.awt.Component.processMouseEvent(Component.java:6516)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)

at java.awt.Component.processEvent(Component.java:6281)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4872)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4698)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4698)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:694)

at java.awt.EventQueue$3.run(EventQueue.java:692)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:708)

at java.awt.EventQueue$4.run(EventQueue.java:706)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

这是我用来创建PDF的代码

public static void stampaEtichette(String percorsoOperazione,

ListlistaArticoli,

Integer numeroCella,boolean aprire)throws DocumentException

{

String folderName = DateUtil.getDataGiornaliera();

percorsoOperazione = (new StringBuilder()).append(percorsoOperazione).append(""+"_"+folderName).append(".pdf").toString();

File f = new File(percorsoOperazione);

try {

OutputStream os = new FileOutputStream(f);

Document doc = new Document(PageSize.A4, -74F, -74F, 0F, 0F);

PdfWriter docWriter = PdfWriter.getInstance(doc, os);

// String testo = "Anagrafica Clienti";

doc.open();

float[] ciccio = {25f,25f,25f,25f};

PdfPTable table = new PdfPTable(ciccio);

table.setSpacingAfter(0f);

table.setSpacingBefore(0f);

PdfContentByte cb = docWriter.getDirectContent();

if(numeroCella!=null){

for(int i=1; i< numeroCella;i++){

Paragraph Descrizione = new Paragraph("", FontFactory.getFont("Century Gothic", 7F, Font.BOLD));

Paragraph Costo = new Paragraph("", FontFactory.getFont("Century Gothic", 10F, Font.BOLD));

PdfPCell cell = new PdfPCell();

cell.setVerticalAlignment(5);

cell.setHorizontalAlignment(1);

cell.setColspan(1);

cell.setFixedHeight(84.1F);

cell.setBorderWidth(0.0F);

cell.setPadding(0F);

Descrizione.setAlignment(1);

cell.addElement(Descrizione);

Costo.setAlignment(1);

cell.addElement(Costo);

table.addCell(cell);

}

}

doc.add(table);

doc.close();

os.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

catch(IOException exp)

{

exp.printStackTrace();

}

catch(DocumentException exp2)

{

exp2.printStackTrace();

}

if(aprire)

{

if(Desktop.isDesktopSupported())

{

try

{

Desktop.getDesktop().open(f.getCanonicalFile());

}

catch(IOException ex)

{

JOptionPane.showMessageDialog(null, ex.getMessage());

}

} else

{

JOptionPane.showMessageDialog(null, "Non è stato trovato un software per aprire i file PDF.", "Errore", 0);

}

}

// return pathimg;

}//fine stampa etichette

错误在这条线上

OutputStream os = new FileOutputStream(f);

我该如何解决?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值