将文件写入现有文件夹时的JAVA FileNotFound

时间:2013-10-28 06:24:26

标签: java blob inputstream filenotfoundexception fileoutputstream

我有一个进程,我将文件夹与数据库中的文件同步。只有50000个文件可以同步。有些文件完美同步;但是在一个文件中,我收到了一个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方法不会将任何内容记录到控制台,因为该目录确实存在。

我搜索了几天,看不出为什么这个文件会在其他文件成功时失败。 任何帮助将不胜感激。

上面的代码已被修剪,变量名称已更改。由于安全原因,我不允许给出堆栈跟踪。我试图复制错误,但没有运气,所以。

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

此致

1 个答案:

答案 0 :(得分:0)

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

此致