ディレクトリのパスを短くしたいのですが。
たとえば、パスを開始する必要があるディレクトリを知っています(パスは1から始まります)。
の代わりにC:\temp\top\1\file.txt
、取得したい1\file.txt
。
StringオブジェクトのメソッドsubstringとindexOfを使用してみてください。
例:
String path = "C:/temp/top/1/file.txt";
System.out.println(path.substring(path.indexOf("1")));
注:\と/...に注意してください。
ファイルからルートへのパスをトラバースして、dirが目的のdirであるかどうかを確認できます。
File baseDir = new File(basePath);
File candidate = new File(fullPath);
String subPath = candidate.getName();
candidate = candidate.getParent();
while (candidate != null && !candidate.equals(baseDir))
{
candidate = candidate.getParent();
subPath = candidate.getName() + File.separatorChar + subPath;
}
// now if candidate == null the file is on another directory, you have to use all the path
// if candidate != null, then subpath has what you want