将文件写入现有文件夹时未找到JAVA FileNotFound

将文件写入现有文件夹时未找到JAVA FileNotFound,java,blob,inputstream,filenotfoundexception,fileoutputstream,Java,Blob,Inputstream,Filenotfoundexception,Fileoutputstream,我有一个将文件夹与数据库中的文件同步的过程。只有不到50000个文件可以同步。有些文件完全同步;但是,在一个文件上,我收到一个“未找到文件”异常。我会检查父目录是否存在,如果不存在,我会创建它 文件写入代码如下所示: for(Map<String,Object> file: fileList) { createDirectory(file); //Creates the directory Blob outBlob = (Blob)file.get("fileDat

我有一个将文件夹与数据库中的文件同步的过程。只有不到50000个文件可以同步。有些文件完全同步;但是,在一个文件上,我收到一个“未找到文件”异常。我会检查父目录是否存在,如果不存在,我会创建它

文件写入代码如下所示:

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();
}
父目录是C:\temp\

我对上面的文件夹有权限

createDirectory方法不会将任何内容记录到控制台,因为该目录确实存在

我已经搜索了几天,不明白为什么这一个文件会失败,而其他文件会成功。 任何帮助都将不胜感激

上面的代码已被删减,变量名也已更改。由于安全原因,我不允许提供堆栈跟踪。我曾试图重复这个错误,但没有成功

PS这是我第一次询问stackoverflow,如果我违反了一些标准规则,请原谅我


关于,

我仔细查看了日志文件,发现文件名前面有一些奇怪的空格字符。我试图复制这个角色,但没能做到。String.trim()将在保存和使用文件名时解决此问题


关于,

能否请您提供更多信息,例如您在地图中作为对象提供了什么。您需要给我们导致此错误的文件的实际名称,即
file.get(“path”)返回的字符串。
。它有效吗?它是否与已存在的目录相同?在这种情况下,代码的重要性不如运行它的确切上下文。谢谢。我担心这是一个我一直忽略的代码问题。如果文件失败,映射文件包含:“父项”:“C:\\temp\\”,“文件数据”:(文件字节),“路径”:“C:\\temp\\PosNewBussinessDocument.PDF”通常
FileNotFoundException
有一条消息。它说什么?在文件未找到异常之后,堆栈跟踪只是说没有这样的文件或目录。
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 ..."); 
        }
    }
}
FileOutputStream fos = new FileOutputStream((String)file.get("path"));