特定の場所に 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」の前のスラッシュが逆になっていることです。しかし、コードに変更はなかったので、同じことが以前に起こっていたでしょう。