Merge "Implement FileUtils#contains."
This commit is contained in:
@@ -357,4 +357,26 @@ public class FileUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if a file lives under the given directory, either as a direct child
|
||||
* or a distant grandchild.
|
||||
* <p>
|
||||
* Both files <em>must</em> have been resolved using
|
||||
* {@link File#getCanonicalFile()} to avoid symlink or path traversal
|
||||
* attacks.
|
||||
*/
|
||||
public static boolean contains(File dir, File file) {
|
||||
String dirPath = dir.getAbsolutePath();
|
||||
String filePath = file.getAbsolutePath();
|
||||
|
||||
if (dirPath.equals(filePath)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!dirPath.endsWith("/")) {
|
||||
dirPath += "/";
|
||||
}
|
||||
return filePath.startsWith(dirPath);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user