답변:
사용 File
의 getParentFile()
방법 및 String.lastIndexOf()
검색 할 단지 바로 위 부모 디렉토리를.
Mark의 의견은 다음보다 더 나은 솔루션입니다 lastIndexOf()
.
file.getParentFile().getName();
이러한 솔루션은 파일에 상위 파일이있는 경우에만 작동합니다 (예 : 상위 파일 생성자 중 하나를 통해 생성됨 File
). getParentFile()
null 일 때 를 사용 lastIndexOf
하거나 Apache CommonsFileNameUtils.getFullPath()
와 같은 것을 사용해야합니다 .
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
접두사 및 후행 구분 기호를 유지 / 삭제하는 몇 가지 변형이 있습니다. 동일한 FilenameUtils
클래스를 사용하여 결과에서 이름을 가져 오거나 를 사용할 수 있습니다 lastIndexOf
.
lastIndexOf
, 단지 사용 file.getParentFile().getName()
.
null
되면 ( File
상대 경로로 인스턴스 를 만든 경우)-시도하십시오 file.getAbsoluteFile().getParentFile().getName()
.
File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
System.out.println(f.getParentFile().getName())
f.getParentFile()
null 일 수 있으므로 확인해야합니다.
String 경로 만 있고 새 File 객체를 만들고 싶지 않은 경우 다음과 같이 사용할 수 있습니다.
public static String getParentDirPath(String fileOrDirPath) {
boolean endsWithSlash = fileOrDirPath.endsWith(File.separator);
return fileOrDirPath.substring(0, fileOrDirPath.lastIndexOf(File.separatorChar,
endsWithSlash ? fileOrDirPath.length() - 2 : fileOrDirPath.length() - 1));
}
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
File curentPath = new File(file.getParent());
//get current path "C:/aaa/bbb/ccc/ddd/"
String currentFolder= currentPath.getName().toString();
//get name of file to string "ddd"
다른 경로를 사용하여 "ddd"폴더를 추가해야하는 경우;
String currentFolder= "/" + currentPath.getName().toString();
test.java
에는 프로그램이 실행되는 컴퓨터에도 존재하지 않을 것입니다..class
실행 되는 컴파일 된 파일입니다. 따라서 이것은ddd
위치 를 알고있는 경우에만 작동합니다 .이 경우 프로그래밍 방식으로 찾을 필요가 없습니다. 그냥 하드 코딩하세요.