Existe uma maneira de usar o FileOutputStream de uma maneira que, se um arquivo (String filename) não existir, ele será criado?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
java
file
file-io
new-operator
fileoutputstream
Stefan Dunn
fonte
fonte
createNewFile()
método, como mostrado no meu exemplo.createNewFile()
ele próprio verifica atomicamente a existência do arquivo.createNewFile()
é uma total perda de tempo aqui. O sistema já fará isso. Você está apenas forçando a aparência duas vezes.Antes de criar um arquivo, é necessário criar todos os diretórios dos pais.
Usar
yourFile.getParentFile().mkdirs()
fonte
Você pode criar um arquivo vazio, exista ou não ...
se você quiser deixar o arquivo se ele existir ...
Você só receberá uma FileNotFoundException se tentar criar o arquivo em um diretório que não existe.
fonte
FileNotFoundException
em ambos os casos.Passe isso
f
para o seuFileOutputStream
construtor.fonte
O FileUtils do apache commons é uma boa maneira de conseguir isso em uma única linha.
Isso criará pastas pai se não existirem e criará um arquivo se não existir e lançará uma exceção se o objeto de arquivo for um diretório ou não puder ser gravado. Isso é equivalente a :
Todas as operações acima lançarão uma exceção se o usuário atual não tiver permissão para fazer a operação.
fonte
Crie um arquivo se não existir. Se o arquivo sair, limpe seu conteúdo:
fonte
Apenas fornecendo uma maneira alternativa de criar o arquivo apenas se ele não existir usando o Path and Files.
fonte
Você pode obter um potencial
FileNotFoundException
se o arquivo não existir.A documentação Java diz:
Se você estiver usando o Java 7, poderá usar o pacote java.nio:
fonte
new FileOutputStream(f)
criará um arquivo na maioria dos casos, mas infelizmente você receberá uma FileNotFoundExceptionde Javadoc
Em outras palavras, pode haver muitos casos em que você obterá FileNotFoundException, que significa "Não foi possível criar seu arquivo", mas você não conseguirá encontrar o motivo pelo qual a criação do arquivo falhou.
Uma solução é remover qualquer chamada para a API de arquivos e, em vez disso, usar a API de arquivos, pois fornece um tratamento de erros muito melhor. Substitua normalmente qualquer um
new FileOutputStream(f)
porFiles.newOutputStream(p)
.Nos casos em que você precisa usar a API de arquivos (porque usa uma interface externa usando o arquivo, por exemplo), usar
Files.createFile(p)
é uma boa maneira de garantir que seu arquivo seja criado corretamente e, caso contrário, você saberia por que não funcionou. Algumas pessoas comentaram acima que isso é redundante. É verdade, mas você obtém melhor tratamento de erros, o que pode ser necessário em alguns casos.fonte