我有一个过程,我将文件夹与数据库上的文件同步。同步的文件略低于 50000 个。一些文件完美同步;但是,在一个文件上,我收到了 File Not Found 异常。我会检查父目录是否存在,如果不存在则创建它。
文件编写代码如下:
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上提问,如果我违反了一些标准规则,请原谅我。
问候,