0

데이터베이스에있는 파일과 폴더를 동기화하는 프로세스가 있습니다. 동기화되는 파일은 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에 묻는 나의 처음이다, 용서해주세요.

감사합니다,

+0

당신이 유지도 <문자열, 개체>의 객체로 제공 할 것 같은 더 많은 정보를 제공하시기 바랍니다 수는 ... –

+0

당신은 우리에게 당신이 오류를 제공 파일의 실제 이름을 줄 필요가 즉'file.get ("path")'에 의해 반환 된 문자열. 그게 유효합니까? 이미 존재하는 디렉토리입니까? 이것은 코드가 실행되는 정확한 컨텍스트보다 코드가 덜 중요한 경우입니다. –

+0

고맙습니다. 나는 이것이 내가 놓친 코드 문제라고 걱정했다. Map 파일에 실패한 파일의 경우 "parent": "C : \\ temp \\", "fileData":(File Bytes), "path": "C : \\ temp \\ PosNewBussinessDocument.PDF " – Infinity

답변

0

나는 나의 로그 파일에 대해 자세히 살펴했고 나는 파일 이름 앞에 이상한 공백 문자가있는 것을 발견했다. 이 캐릭터를 복제하려했지만 그렇게 할 수 없었습니다. String.trim()은 파일 이름을 저장하고 사용할 때이 문제를 해결합니다.

감사합니다,

관련 문제