2013-04-19 3 views
1

우리는 윈도우 서비스로 배치 파일을 사용하여 jar 파일을 실행하고 xml 파일을 c:/processed 디렉토리에 넣습니다.원본 파일을 삭제하지 못했습니다

xml에 오류가있는 형식이있는 경우 오류 폴더로 이동하십시오. 우리는 아래의 방법을 사용하여 파일을 오류 폴더로 옮기지 만 예외 아래에있게됩니다.

프로세스가 실행 중일 때 오류 폴더로 파일을 이동할 수 없다고 생각합니다. movedErrorFolder에서

FileUtils.moveToDirectory("a.xml", "c:/processed/error", false); 

예외 : 원본 파일 'C를 : /processed/a.xml'을 삭제하지 못했습니다 복사 한 후에 'C : /processed/error/a.xml'

+0

무엇에 대한 쓰기 권한에 JDK 6을 사용하고 왜

지금 나 한테 물어하지? – joval

+0

'FileUtils' 클래스 란 무엇입니까? 표준 Java API에서는 클래스가 아닙니다. – Jesper

+2

XML을 검증했음을 언급 한 것을 볼 수 있습니다. 파일의 유효성을 검사 한 후에 파일을 relased했는지 확인하십시오.우리는 JAXB –

답변

5
  1. 자바 프로세스는 파일을 삭제할 권한이 없지만 쓸 수 있다면 삭제할 수 있습니다.
  2. 파일이 다른 프로세스에 의해 잠겨 있습니다. 이것은 일반적으로 Excel로 CSV 열기를 작성할 때 발생합니다.
  3. 파일은 Java 프로세스 자체에 의해 잠겨져 있으며 파일을 이동하기 전에 닫습니다(). 더 자세한 정보를 제공
0

또 다른 예외는 아마 원인 속성

0

1) 편집기/뷰어에서 열거 나 다른 프로세스에 의해 사용되는 XML을하지 않아도 확인이 보유, 예외에 중첩된다.
2) 파일을 이동하기 전에 .close()를 확인하십시오.

0

디렉토리에 파일을 열어 읽거나 쓸 수 있는지 확인하고 상위 디렉토리를 삭제하기 전에 .close();을 호출하지 않았는지 확인하십시오.

0

당신은 아파치에서이 방법을 시도 할 수 :

void org.apache.commons.io.FileUtils.moveFileToDirectory(File srcFile, File destDir, boolean createDestDir) 

예를 들어,

사용이 수입

 import org.apache.commons.io.FileUtils; 

당신의 코드는 다음과 같다 : 나는 지난 24 시간 이후이 오류와 함께 고민했다

FileUtils.moveFileToDirectory(new File("c:/processed/a.xml"), new File("c:/processed/error"), false); 
0

. 위의 답변 중 어느 것도 나를 위해 일하지 않았습니다. 내 운영 체제는 Windows 7 64 비트이고 JDK 6을 사용하고 있습니다. File.delete뿐만 아니라 FileUtils.moveToDirectory 메서드를 사용했습니다.

나는 자바와 관련이 있다고 생각했다. 필자는 JDK 6을 제거하고 다시 설치 (설치 관리자를 실행하여 확실하게했습니다)하고 내 컴퓨터와 유레카를 다시 시작하면 오류가 사라지고 모든 작업이 시작되었습니다. 나는 아직도 2017 (일부 기업 소프트웨어 ****)이 파일에 대한

관련 문제