데이터베이스에있는 파일과 폴더를 동기화하는 프로세스가 있습니다. 동기화되는 파일은 50000 개에 불과합니다. 일부 파일은 완벽하게 동기화됩니다. 그러나 한 파일에서 File Not Found Exception을 수신합니다. 상위 디렉토리가 존재하는지 확인하고 그렇지 않은 경우 작성합니다.JAVA FileNotFound 기존 폴더에 파일을 쓸 때
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 방법 :
[파일 쓰기 코드는 다음과 같다 이것은 FileNotFoundException이
FileOutputStream fos = new FileOutputStream((String)file.get("path"));
부모 디렉토리가 제공 라인이
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 ...");
}
}
}
C : \ temp \
위의 폴더에 대한 사용 권한이 있습니다.
createDirectory 메서드는 디렉토리가 존재하기 때문에 콘솔에 아무 것도 기록하지 않습니다.
나는 며칠 동안 검색을했는데 다른 하나가 성공하는 동안이 한 파일이 실패하는 이유를 알 수 없습니다. 도움이 될 것입니다.
위의 코드는 삭제되었으며 변수 이름이 변경되었습니다. 보안상의 이유로 스택 추적을 제공 할 수 없습니다. 나는 오류를 복제하려했지만 doeing에 운이 없었습니다.
추신 : 이것은 몇 가지 표준 규칙을 어기면 내게 stackoverflow에 묻는 나의 처음이다, 용서해주세요.
감사합니다,
당신이 유지도 <문자열, 개체>의 객체로 제공 할 것 같은 더 많은 정보를 제공하시기 바랍니다 수는 ... –
당신은 우리에게 당신이 오류를 제공 파일의 실제 이름을 줄 필요가 즉'file.get ("path")'에 의해 반환 된 문자열. 그게 유효합니까? 이미 존재하는 디렉토리입니까? 이것은 코드가 실행되는 정확한 컨텍스트보다 코드가 덜 중요한 경우입니다. –
고맙습니다. 나는 이것이 내가 놓친 코드 문제라고 걱정했다. Map 파일에 실패한 파일의 경우 "parent": "C : \\ temp \\", "fileData":(File Bytes), "path": "C : \\ temp \\ PosNewBussinessDocument.PDF " –
Infinity