0

特定の場所に Java プログラムからディレクトリを作成できない理由がわかりません。詳細は次のとおりです-私のコンピューターのフォルダーはネットワーク上で共有されています。

コード:

File xmlDirectory = new File(sXMLOutputPath);

 /*
  * TODO: if multiple threads arive at the 1st if, if will evaluate to true, 
  * then 1st thread would create directory, and the 2nd being .01 sec later, will fail   
  *  to create directory and have exception
  * SOLUTION:  Provide additional if exists, so that 2nd thread will recognize that it 
  *  was created.  
  */
 if (!xmlDirectory.exists()){
     if (!xmlDirectory.mkdirs()){
       if (!xmlDirectory.exists()){
          throw new BillAdminException("Failed to create xml directory: " + 
           sXMLOutputPath);
       }
     }
 }

これはサーバー側のコードです

要約すると、フォルダー C:\folder\etc を共有し、それを JVM オプションとしてプログラムに渡すと、サーバー側プログラムは \xml\333\333.xml" を "追加" し、それを作成することになっています。 C:\folder\etc\xml\333\ という構造体を作成し、次に 333.xml を作成します。C:\folder の場合、C:\folder\etc\xml\333 の作成に失敗します。 \etc は "\myMachine\etc" の形式で共有場所として渡されますが、別のマシン "\OtherMachine\etc" でその構造を作成すると問題なく動作します。"C:\folder\etc" として渡すと (絶対、共有形式ではありません) コードが実行されるサーバー マシン上にディレクトリとファイルを作成し、正常に動作します。自分のマシン (クライアント) に作成する必要があります。フォルダーを共有するときに間違っていることは何ですか。
PS - この機能は約 2 か月前に動作しました。ただし、それ以降、フォルダーのプロパティは調整されている可能性があります。ただし、Javaコードではありません。

PS 2: JVM オプションから渡す共有フォルダーはこれだけではありません。他に2つありますが、読み取りに使用されます(サブフォルダーの作成ではありません)

PS 3:私が得るエラーは次のとおりです。

Failed to create xml directory: \\myMachine\etc\xml/333/ 

怪しいにおいがするのは、「333」の前のスラッシュが逆になっていることです。しかし、コードに変更はなかったので、同じことが以前に起こっていたでしょう。

4

0 に答える 0