3

EmbeddedObjects を使用して添付ファイルを抽出しようとしています。添付ファイルを抽出することはできますが、システムの一時フォルダーに em*tm 一時ファイルを作成できます。

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

入力ストリームを閉じた後、システムの一時フォルダーから一時ファイルが削除されません。私のコードに何か問題があるのでしょうか、それともロータス ノートの設定に問題があるのでしょうか。

これで私を助けてもらえますか?

助けてくれてありがとう。

4

2 に答える 2

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(); 
  }
于 2012-09-21T06:40:23.510 に答える
1

私の提案は、最初にあなたがあなたの投稿で表現したすべてのコードをコメントアウトすることです

.....
......

一時ファイルはまだ取り残されていますか?もしそうなら、IBMに報告する必要がある8.xのNotesバックエンドクラスのバグのようです。

そうでない場合は、コメントアウトされたコードの何かがclose()呼び出しの成功を妨げています。InputStreamは抽象クラスであるため、ファイルが開いたままになるのを防ぐために閉じる必要がある別のタイプのストリームオブジェクトにinputStreamをバインドしている可能性があります。

于 2012-09-20T22:34:03.837 に答える