2012-09-24 3 views
0

Java에서 파일/폴더 삭제로 성능이 저하되고 있습니다.Java 7에서 파일/폴더 삭제

코드가 꽤 오래되었고 Java 7 (업 그레 이드 한 버전)이 실제로 성능 향상 또는 다른 구문을 제공하는지 궁금합니다. (나는 이익을 얻지 않는 한 모든 것을 재 작업하고 싶지 않다.) 정기적으로 대형 ZIP을 추출한 다음 내용을 삭제해야하며 재귀 시간은 잔인합니다.

나는 또한 Windows에서 붙어있다.

감사합니다.

+5

코드를 게시하시기 바랍니다 당신은 파일과 폴더를 삭제하는 데 사용 니펫을. 그렇지 않으면 우리는 당신을 도울 수 없을 것입니다. – Baz

+1

고대 코드가 NIO API를 사용하지 않는다면 Java 7로 해당 API로 전환하면 성능이 향상됩니다. –

+0

JDK 7을 다운로드하여 설치하고 테스트 할 수있는 작은 프로그램을 작성하는 것이 도움이되는지 확인하십시오. – Jesper

답변

1

파일 IO는 하드웨어 성능에 따라 크게 달라질 수 있습니다. 많은 HDD는 초당 80 - 120 IOPS를 수행 할 수 있습니다. 파일을 열려면 초당 최대 120 개의 파일을 읽을 수 있습니다. 파일을 삭제하려면 두 번의 업데이트 또는 초당 최대 60 개의 파일 삭제가 필요할 수 있습니다. 이러한 제약 조건으로 인해 소프트웨어에서 수행 할 수있는 작업은 거의 없습니다.

그러나 SSD를 사용하면 초당 80,000-230,000 IOPS를 처리 할 수 ​​있습니다 (천 배 이상 증가). 소프트웨어를 수행 할 때 차이가 날 수 있지만 압축 파일을 처리 할 때 대부분이 CPU가 병목 지점이 될 것입니다.

2

커뮤니티에서 이미 제공하는 병을 사용하는 것이 좋습니다. 예를 들어 , 공통 io.x-x.jar 파일, 봄-core.jar를

Eg, org.apache.commons.io.FileUtils; 
     FileUtils.copyDirectory(from, to); 
     FileUtils.deleteDirectory(childDir); 
     FileUtils.forceDelete(springConfigDir); 
     FileUtils.writeByteArrayToFile(file, data); 

     org.springframework.util.FileSystemUtils; 
     FileSystemUtils.copyRecursively(from, to); 
     FileSystemUtils.deleteRecursively(dir); 
+0

이것은 좋은 생각입니다. 이러한 솔루션 중 하나가 새로운 java.nio.file 라이브러리를 기반으로하는 Java 1.7인지 궁금합니다. Apache Commons FileUtils는 어떻습니까? – djangofan

관련 문제