我试图提取使用EmbeddedObjects附件,我能提取附件,但创建EM * TM的临时文件在系统临时文件夹。
EmbeddedObject embeddedObject=document.getAttachment(attachmentName);
InputStream inputStream=embeddedObject.getInputStream();
.....
......
inputStream.close();
embeddedObject..recycle();
document..recycle();
关闭输入流的不删除临时文件形式,系统临时文件夹后。 这是任何事情错在我的代码或与Lotus Notes的设置问题。
能否请你帮我在这?
谢谢您的帮助。
这是一个常见的问题,并且本发明涉及的对象(丢失或不按顺序)的不正确的关闭/再循环。 而对象是活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();
}
我的建议是,首先注释掉所有您在您的文章作为代表的代码
.....
......
是否临时文件仍然落在后面? 如果是这样,它看起来像它在票据背面端类8.x中需要被报告给IBM的错误。
如果没有,那么什么东西在注释掉的代码,防止关闭()调用得手。 为InputStream是一个抽象类,所以也许你要绑定的InputStream另一种类型的流对象必须以防止文件保持开放被关闭。
文章来源: Extracting attachments from lotus notes api using EmbeddedObject, Creating eo*tm file in system folder