문제

나는있다 String 파일 이름을 포함하여 파일에 대한 절대 경로를 제공합니다. 파일 이름 만 받고 싶습니다. 이것을하는 가장 쉬운 방법은 무엇입니까?

URL이 무엇인지 미리 알 수없는 것처럼 가능한 한 일반적인 것이 필요합니다. 단순히 URL 객체와 사용을 만들 수는 없습니다 getFile() - 가능하다면 이상적이었을 것입니다. 반드시 http:// 접두사는 C :/ 또는 비슷한 것일 수 있습니다.

도움이 되었습니까?

해결책

new File(fileName).getName();

또는

int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;

첫 번째 솔루션은 시스템 의존적입니다. 시스템의 경로 분리기 문자 만 고려합니다. 따라서 코드가 UNIX 시스템에서 실행되고 Windows 경로를 수신하면 작동하지 않습니다. 인터넷 익스플로러가 파일 업로드를 처리하는 경우가 발생합니다.

다른 팁

new File(absolutePath).getName();

아파치 커먼즈 IO java.io.file 클래스는 기본 사항을 제공하지만 FilenameUtils 클래스를 제공하는 다양한 유틸리티 기능 세트를 제공합니다.

에서 Apache Commons io filenameutils

String fileName = FilenameUtils.getName(stringNameWithPath);

다음은 두 가지 방법입니다 (둘 다 독립적입니다.)

사용 Paths : 1.7 이후

Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();

사용 FilenameUtils Apache Commons에서 io :

String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top