データベース上のファイルとフォルダーを同期するプロセスがあります。同期するファイルは 50000 をわずかに下回っています。一部のファイルは完全に同期します。ただし、1 つのファイルで File Not Found Exception が発生します。親ディレクトリが存在するかどうかを確認し、存在しない場合は作成します。
ファイル書き込みコードは次のとおりです。
for(Map<String,Object> file: fileList)
{
createDirectory(file); //Creates the directory
Blob outBlob = (Blob)file.get("fileData");
InputStream is = outBlob.getBinaryStream();
FileOutputStream fos = new FileOutputStream((String)file.get("path"));
int b = 0;
while ((b = is.read()) != -1)
{
fos.write(b);
}
fos.flush();
fos.close();
}
そして createDirectory メソッド:
public static void createDirectory(Map<String,Object> file) throws IOException
{
// Create parent directory - If directory does not exist
File directory = new File(file.get("parent"));
if (!directory.exists())
{
System.out.println("Parent Directory does not exist, creating ...");
// ...create it
if (!directory.mkdirs())
{
System.out.println("Parent Directory creation failed ...");
}
}
}
これは FileNotFoundException を与える行です
FileOutputStream fos = new FileOutputStream((String)file.get("path"));
親ディレクトリは C:\temp\ です
上記のフォルダーに対する権限があります。
ディレクトリが存在するため、 createDirectory メソッドはコンソールに何も記録しません。
数日間検索しましたが、この 1 つのファイルが失敗し、他のファイルが成功する理由がわかりません。どんな助けでも大歓迎です。
上記のコードは削除され、変数名が変更されました。セキュリティ上の理由から、スタック トレースを提供することは許可されていません。エラーを複製しようとしましたが、うまくいきませんでした。
PSスタックオーバーフローについて質問するのはこれが初めてです。標準ルールに違反した場合はご容赦ください。
よろしく、