0

我有一个过程,我将文件夹与数据库上的文件同步。同步的文件略低于 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上提问,如果我违反了一些标准规则,请原谅我。

问候,

4

1 回答 1

0

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

问候,

于 2013-10-29T05:20:59.323 回答