我在Lotus Domino中运行的以下Java代码存在问题。
File filData = new File(domSapFilePath + "\\DOMSAP" + sdfDateTime.format((Calendar.getInstance()).getTime()) + ".csv");
FileOutputStream foData = new FileOutputStream(filData);
foData.write(DomSapGenerator.GenerateDomSapFile(con, dateFrom, dateTo).getBytes());
foData.close();
con.close();
创建的文件位于UNC路径中,但是当它尝试写入文件时,它会错误地说该文件正被另一个进程使用,如下所示:
error message: java.io.FileNotFoundException: \\10.XX.XX.XX\xxxxxx\XXX\DOXXXXXX22230.csv (The process cannot access the file because it is being used by another process)
我之前从未用Java编程,我希望有人可以指出我正确的方向来解决这个问题,这个问题会间歇性地发生。
谢谢。
答案 0 :(得分:2)
此问题最可能的原因是其他文件已打开并正在使用它。操作系统阻止您写入文件,因为这可能会干扰“别的”正在做的事情。
可能是间歇性地发生,因为“其他东西”偶尔只使用该文件。
解决方案是弄明白:
答案 1 :(得分:1)
当您尝试打开UNC路径时,此错误消息的另一个原因可能是代码在已调度的代理中运行。
在这种情况下,与服务器\ 10.XX.XX.XX \的连接将在运行Domino的OS帐户的上下文中打开 - 通常是“SYSTEM”。由于“SYSTEM”用户不允许与另一台服务器建立网络连接,因此打开的呼叫将失败。
解决方案:将Domino服务作为另一个(AD)用户运行,该用户有权建立网络连接。
答案 2 :(得分:0)
你没有说出什么操作系统,但我会根据UNC格式猜测Windows。
Microsoft有一个名为Process Monitor的程序。您可以使用它来跟踪触摸文件的内容。
http://technet.microsoft.com/en-us/sysinternals/bb896645
但我也会先和leyrers做出回应。