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 が実行されている OS アカウント (通常は「SYSTEM」) のコンテキストで開かれます。「SYSTEM」ユーザーは別のサーバーへのネットワーク接続を許可されていないため、open 呼び出しは失敗します。

解決策: ネットワーク接続を確立する権限を持つ別の (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 に答える