提取使用EmbeddedObject从Lotus Notes API的附件,在系统文件夹中创建EO

2019-09-22 16:47发布

我试图提取使用EmbeddedObjects附件,我能提取附件,但创建EM * TM的临时文件在系统临时文件夹。

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

关闭输入流的不删除临时文件形式,系统临时文件夹后。 这是任何事情错在我的代码或与Lotus Notes的设置问题。

能否请你帮我在这?

谢谢您的帮助。

Answer 1:

这是一个常见的问题,并且本发明涉及的对象(丢失或不按顺序)的不正确的关闭/再循环。 而对象是活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(); 
  }


Answer 2:

我的建议是,首先注释掉所有您在您的文章作为代表的代码

.....
......

是否临时文件仍然落在后面? 如果是这样,它看起来像它在票据背面端类8.x中需要被报告给IBM的错误。

如果没有,那么什么东西在注释掉的代码,防止关闭()调用得手。 为InputStream是一个抽象类,所以也许你要绑定的InputStream另一种类型的流对象必须以防止文件保持开放被关闭。



文章来源: Extracting attachments from lotus notes api using EmbeddedObject, Creating eo*tm file in system folder