Java의 파일 위치에서 파일 이름을 얻습니다
문제
나는있다 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");
제휴하지 않습니다 StackOverflow