我有一个进程,我将文件夹与数据库中的文件同步。只有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,如果我违反了一些标准规则,请原谅我。
此致
答案 0 :(得分:0)
我仔细查看了我的日志文件,发现文件名前面有一些奇怪的空格字符。我试图复制这个角色但是无法复制。保存和使用文件名时,String.trim()将解决此问题。
此致