List of usage examples for java.nio.file AccessDeniedException getOtherFile
public String getOtherFile()
From source file:com.epam.catgenome.manager.FileManager.java
/** * Returns contents of a directory, specified by path, to browse NGS files * * @param path a path to directory to browse * @return {@link List} of {@link FsDirectory}s, and {@link FsFile}, representing subdirectories and files * @throws IOException/* w ww . j a va 2 s. com*/ */ public List<AbstractFsItem> loadDirectoryContents(String path) throws IOException { if (!filesBrowsingAllowed) { throw new AccessDeniedException("Server file system browsing is not allowed"); } List<File> parentDirs = new ArrayList<>(); if (path == null) { if ("/".equals(ngsDataRootPath)) { parentDirs = Arrays.asList(File.listRoots()); } else { parentDirs.add(new File(ngsDataRootPath)); } } else { parentDirs.add(new File(path)); } Assert.isTrue(parentDirs.stream().allMatch(File::exists), "Specified path does not exist: " + path); Assert.isTrue(parentDirs.stream().allMatch(File::isDirectory), "Specified path is not a directory: " + path); List<AbstractFsItem> items = new ArrayList<>(); boolean accessDenied = false; String fileName = ""; String otherFileName = ""; for (File parentDir : parentDirs) { if (parentDir.listFiles() == null) { continue; } try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(parentDir.toPath())) { for (Path child : dirStream) { try { File childFile = child.toFile(); if (childFile.isDirectory()) { FsDirectory directory = new FsDirectory(); directory.setPath(childFile.getAbsolutePath()); if (childFile.canRead()) { directory.setFileCount(countChildrenFiles(child)); } items.add(directory); } else { addFsFile(items, childFile); } } catch (AccessDeniedException e) { LOGGER.error("Access denied:", e); accessDenied = true; fileName = e.getFile(); otherFileName = e.getOtherFile(); } } if (items.isEmpty() && accessDenied) { throw new AccessDeniedException(fileName, otherFileName, "Access denied"); } } } return items; }