0
我有一個進程將數據庫中的文件與文件夾同步。只有低於50000個文件同步。有些文件完全同步;但是,在一個文件上,我收到一個未找到文件的例外。我檢查父目錄是否存在,如果不存在,我創建它。將文件寫入現有文件夾時發現JAVA FileNotFound
文件寫入代碼如下:
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方法不會將任何內容記錄到控制檯,因爲該目錄確實存在。
我已經搜索了幾天,無法看到爲什麼這一個文件將失敗,而其他成功。 任何幫助,將不勝感激。
上面的代碼已被修剪並且變量名稱已更改。由於安全原因,我不允許給出堆棧跟蹤。我試圖複製錯誤,但沒有這樣做的運氣。
PS這是我第一次問stackoverflow,請原諒我,如果我打破了一些標準規則。
問候,
請你給更喜歡什麼ü在地圖<字符串,對象>提供的對象信息.. –
你需要給我們,讓你這個錯誤的文件的實際名稱,即'file.get(「path」)'返回的字符串。它有效嗎?它是否與已經存在的目錄相同?這是代碼不如其運行的確切上下文重要的一種情況。 –
謝謝。我擔心這是一個我一直想念的代碼問題。對於Map文件失敗的文件,包含:「parent」:「C:\\ temp \\」,「fileData」:(文件字節),「path」:「C:\\ temp \\ PosNewBussinessDocument.PDF「 –
Infinity