0

我对在 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 编程,我希望有人能指出我正确的方向,以解决这个间歇性发生的问题。

谢谢你。

4

3 回答 3

2

此问题的最可能原因是其他东西打开了文件并正在使用它。操作系统阻止您写入文件,因为这可能会干扰“其他”正在执行的操作。

它可能是间歇性发生的,因为“其他东西”只是偶尔使用该文件。

解决方案是弄清楚:

  • 什么在使用文件,
  • 为什么要锁定它,以及
  • 如何协调文件上的不同活动以避免冲突。
于 2012-04-23T11:33:48.823 回答
1

当您尝试打开 UNC 路径时,此错误消息的另一个原因可能是代码在计划代理内运行。

在这种情况下,与服务器 \10.XX.XX.XX\ 的连接将在 Domino 运行的操作系统帐户的上下文中打开 - 通常是“SYSTEM”。由于不允许“SYSTEM”用户与另一台服务器建立网络连接,因此打开调用将失败。

解决方案:以有权建立网络连接的另一个 (AD) 用户身份运行 Domino 服务。

于 2012-04-24T15:58:50.863 回答
0

你没有说什么操作系统,但我会根据UNC格式来猜测一下windows。

Microsoft 有一个名为 Process Monitor 的程序。您可以使用它来跟踪正在触摸文件的内容。

http://technet.microsoft.com/en-us/sysinternals/bb896645

但我也会先接受 leyrers 的回应。

于 2012-04-24T17:37:08.143 回答