2017-05-05 8 views
1

.txt 파일의 .afp 파일의 이름을 바꿔야합니다. 나는이 일을 얻으려고 노력하는 동안 수많은 "해결책"을 우연히 만났고 아무 것도 도움이되지 못했습니다.다른 확장명의 파일에서 문자열로 파일 이름 바꾸기

C:/test/a/Mytes t.txt에 txt 파일이 있고 .afp 파일의 이름을 C:/files/b/Testf ile.afp으로 변경하고 싶다고합시다. 이것은 내가 (이 사이트에서 찾은 해결책에 따라) 노력하고 있으며 작동하지 않습니다. 나는 .txt 파일의 확장자를 잘라 유일한 파일 이름을 얻을 :

String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.')); 
//fileName is .txt file name 
File file = new File(afpSRC, afpName); 
file.renameTo(new File(afpSRC, fileNameNoExt + ".afp")); 

afpSRC가있는 .afp 파일이있는 및 afpName 파일의 이름입니다 폴더의 경로가 포함되어 있습니다.

아무도 왜 이것이 작동하지 않는지 알 수 있습니까? .afp 파일 이름이 동일하게 유지됩니까?

+0

fileName''에 무엇입니까? 이 작업을 수행하려면 전체 경로가 아닌 파일 이름 만 있으면됩니다. – jingx

+0

나중에 덧글을 달았습니다. 유감스럽게도, 미안합니다. fileName은 txt fileName입니다. 아니 절대 경로 –

답변

0

아마도 File file = new File(afpSRC, afpName);은 기존 파일을 참조하지 않기 때문일 수 있습니다.

afpSRC이 상위 경로가 아니거나 afpName이 파일 이름이 아닌 것으로 의심됩니다. 아니면 둘다 ?

디버깅하려면 먼저 파일이 존재하는지 확인해야합니다.
존재하지 않는 경우 예외를 throw하십시오.
어떤 식 으로든 (디버그 및 최종 코드) 이외에 반환 값을 renameTo()으로 확인하고 결과를 처리해야합니다. 당신은 자바 NIO 시설을 사용하는 경우

String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.')); 
//fileName is .txt file name 
File file = new File(afpSRC, afpName); 
if (!file.exists()){ 
    throw new RuntimeException("file not found = " + file); 
} 

boolean isRenamed = file.renameTo(new File(afpSRC, fileNameNoExt + ".afp")); 
System.out.println("isRenamed = " + isRenamed); 
if (!isRenamed){ 
    // handle the problem 
} 
+0

고마워, 내가 복사 한 .pdf 버전의 파일 및 dst 폴더에 .afp 복사 및 그 던지고 오류, 난 단지 파일이 있는지 확인한 후 그것을 가지고있어. 이 벙어리 실수로 인해 2 시간을 잃었습니다. –

+0

당신은 환영합니다 :) 멍청한 실수는 종종 평가하에 있습니다 :) – davidxxx

1

, 당신은 이름 바꾸기가 실패한 이유를 설명하는 예외를 통해 정보를 얻을 수있을 것입니다 : 여기

은 샘플 코드입니다.

Files.move(Path from, Path to, CopyOption... options) throws IOException

String fileNameNoExt=fileName.substring(0, fileName.lastIndexOf('.')); 
Path afpPathName = Paths.get(afpSRC, afpName); 
Path newPathName = Paths.get(afpSRC, fileNameNoExt + ".afp"); 
Files.move(afpPathName, newPathName); 
+0

Paths.get은 각 인수 사이에 디렉토리 구분 기호를 배치합니다. 코드의 세 번째 줄은 기본 이름이 ".afp"인 파일을 실제로 만들고 싶지 않으면'Paths.get (afpSRC, fileNameNoExt + ".afp")'입니다. – VGR

+0

@VGR 죄송합니다! 좋은 캐치. 결정된. –