使用EmbeddedObject,在系统文件夹中创建eo * tm文件,从lotus notes api中提取附件

时间:2012-09-20 16:26:27

标签: lotus-notes lotus-domino lotus

我正在尝试使用EmbeddedObjects提取附件,我能够提取附件但在系统临时文件夹中创建em * tm临时文件。

 EmbeddedObject embeddedObject=document.getAttachment(attachmentName);
 InputStream inputStream=embeddedObject.getInputStream();
 .....
 ......
 inputStream.close();
 embeddedObject..recycle();
 document..recycle();

关闭输入后,流不删除临时文件系统临时文件夹。 我的代码或莲花笔记的设置问题是否有任何问题。

你能帮帮我吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这是一个常见问题,它与对象的错误关闭/回收(缺失或不按顺序)有关。 E0 * TM文件将在对象处于活动状态时创建,并在回收时进行清理。

如果它们是正确的,请检查运行的任何防病毒软件是否阻止删除。

以下示例代码我之前用来测试它,所以请与您的代码进行比较。

  try { 

   System.out.println("Start"); 
   String path = "test.txt";    

   Session session = getSession();  
   AgentContext agentContext = session.getAgentContext();   

   System.out.println("Get DB");    
   Database db = session.getCurrentDatabase();  

   System.out.println("View + doc");    
   View vw = db.getView("main");    
   Document doc = vw.getFirstDocument();    

   System.out.println("Embedded object");   
   EmbeddedObject att = doc.getAttachment(path);    
   InputStream is = att.getInputStream();   
   ByteArrayOutputStream fos = new ByteArrayOutputStream(); 

   byte buffer[] = new byte[(int) att.getFileSize()];   
   int read;    
   do { 
    read = is.read(buffer, 0, buffer.length);   
    if (read > 0) { 
     fos.write(buffer, 0, read);    
    }   
   } while (read > -1); 

   fos.close(); 
   is.close();

   // recycle the domino variables  
   doc.recycle();   
   vw.recycle();    
   db.recycle();    
   att.recycle();   

  } catch (Exception e) {   
   e.printStackTrace(); 
  }