2008-11-06 3 views
2

기존 파일의 이름으로 바꿔야하는 파일이 있습니다. 이것은 기존 JAR 파일에서 원래 작업을 복사, 수정 및 대체합니다. 처음 두 단계를 완료했습니다. 원래 비트를 대체하는 데 도움이 필요합니다. JAR의 새 버전을 이전 버전의 이름으로 바꾸는 가장 좋은 방법은 무엇입니까? 이전 JAR은 보존 할 필요가 없으며 초기 이름이 붙어있는 새로운 JAR 복사본을 갖고 싶지 않습니다.Java에서 다른 파일로 파일 이름 바꾸기

나는 이미 commons lang과 io를 가지고 있기 때문에 만약 내가 놓친 방법이 있다면 그것은 좋을 것이다.

+0

JAR 파일 또는 Jar 파일 자체에 포함 된 파일입니까? –

답변

2

두 개의 java.io.File 개체를 만들어야합니다. 하나는 새 파일 용이고, 하나는 이전 파일 용입니다.

oldFilenewFile으로 전화를 걸 수 있습니다.

oldFile.delete() 
newFile.renameTo(oldFile); 

편집 : mmyers가 나를 이겼습니다.

+1

renameTo는 플랫폼에 따라 다르며 모든 경우에 작동하지 않을 수 있습니다. 당신은 항상 그것을 한 후에 성공했는지 확인해야합니다. –

1

deleting 이전 버전에 문제가 있습니까? renaming 새 문제가 있습니까?

3

Java.io.File.renameTo(java.io.File)

먼저 원본 파일을 처음 File.delete()를 호출해야 할 수도 있습니다 - 일부 시스템은 기존의 파일에 파일 이름을 변경하지 않습니다.

+0

Windows XP에서 확인했는데 원본을 삭제하지 않으면 작동하지 않습니다. –

+1

예외가 발생했거나 false를 반환 했습니까? – Alnitak

2

이 합리적으로 가까운 당신을 얻을해야합니다

public boolean replaceOldJar(String originalJarPath, java.io.File newJar) { 
    java.io.File originalJar = new java.io.File(originalJarPath); 
    if (!originalJar.isFile()) { 
     return false; 
    } 
    boolean deleteOldJarSucceeded = originalJar.delete(); 
    if (!deleteOldJarSucceeded) { 
     return false; 
    } 
    newJar.renameTo(originalJar); 
    return originalJar.exists(); 
} 
1

내가 완전히 확실하지 않다 당신은 또한 당신의 항아리의 새로운 버전을 다시로드하려면 파일 시스템에서 파일의 이름을 바꾸거나하는 방법을 간단하게 요구하는 경우 ?

이름 바꾸기 부분이 쉽다 ... File.renameTo 만 사용하십시오 ... 불행히도이 작업과 관련된 많은 플랫폼 관련 문제가 있습니다. 일부 플랫폼에서는 기존 파일을 덮어 쓸 수 없으며 다른 플랫폼에서는 위치를 다른 파티션으로 변경하기 위해 파일의 이름을 바꿀 수 없습니다. 프로세스를 완전히 안전하게 만들려면 먼저 이전 파일을 제거한 다음 새 이름을 바꾸거나 파티션 변경이 가능한 경우 복사하여 프로세스를 직접 수행해야합니다. 더 이상 원자 적 조작이 아니기 때문에 응용 프로그램/기계가이 작업을하는 동안 충돌이 발생하면 자연히 문제가 발생합니다. 따라서 응용 프로그램 시작 프로세스에 충돌이 발생할 때 중간에 있었던 이름 바꾸기 작업을 확인하는 검사를 추가해야합니다. 이 방법으로 단일 파일을 업데이트하는 경우 매우 간단해야합니다.

그러나 실제로 병을 다시로드하려는 경우 문제에 대해 몇 가지 더 많은 문제가 있지만 상황에 대한 자세한 정보를 제공하여이를 수행하는 방법에 대한 적절한 조언을 받아야합니다.