Estou brincando um pouco com os novos recursos do Java 7 IO, na verdade estou tentando receber todos os arquivos xml de uma pasta. Mas isso gera uma exceção quando a pasta não existe. Como posso verificar se a pasta existe com o novo IO?
public UpdateHandler(String release) {
log.info("searching for configuration files in folder " + release);
Path releaseFolder = Paths.get(release);
try(DirectoryStream<Path> stream = Files.newDirectoryStream(releaseFolder, "*.xml")){
for (Path entry: stream){
log.info("working on file " + entry.getFileName());
}
}
catch (IOException e){
log.error("error while retrieving update configuration files " + e.getMessage());
}
}
DirectoryStream
, e muito menos quando você itera sobre as entradas da pasta.Respostas:
Usando
java.nio.file.Files
:Opcionalmente, você pode passar esses
LinkOption
valores de método :Há também um método
notExists
:fonte
Files.exists(path)
eFiles.notExists(path)
podem retornar false ao mesmo tempo! Isso significa que o Java não pôde determinar se o caminho realmente existe.!Files.exists(path)
eFiles.notExists(path)
não são 100% a mesma coisa. Quando o Java não pode determinar se existe um arquivo, o primeiro retornarátrue
e o segundo retornaráfalse
.Bem simples:
E se você quer ter certeza de que é um diretório:
fonte
if(f.isDirectory()) {...}
seria suficiente, pois verifica também a existência.java.io.file
não faz parte dos "novos recursos do Java 7 IO" aos quais o OP está se referindo. Ojava.nio.file
pacote, que foi introduzido no Java 7, oferece as classesPaths
eFiles
. Outras respostas aqui explicam corretamente como usar essas classes mais recentes para resolver o problema dos OPs.Para verificar se existe um diretório com o novo IO:
isDirectory
retornatrue
se o arquivo é um diretório;false
se o arquivo não existir, não for um diretório ou não for possível determinar se o arquivo é um diretório ou não.Veja: documentação .
fonte
Você precisa transformar seu caminho em um
File
e testar a existência:fonte
Gere um arquivo a partir da cadeia de caracteres do seu diretório de pastas
e use o método existe.
Se você deseja gerar a pasta, você deve usar mkdir ()
fonte
Não há necessidade de chamar o
exists()
método separadamente , poisisDirectory()
verifica implicitamente se o diretório existe ou não.fonte
fonte
fonte
Podemos verificar arquivos e três pastas.
fonte
No SonarLint , se você já possui o caminho, use em
path.toFile().exists()
vez deFiles.exists
obter um melhor desempenho.Exemplo de código não conforme:
Solução compatível:
fonte