Criar um arquivo é uma operação de entrada e saída muito comum. Hoje vamos analisar diferentes maneiras de criar um arquivo em Java.
Criar arquivo em Java
Existem três métodos populares para criar um arquivo em Java. Vamos analisá-los um por um.
-
File.createNewFile()
java.io.File
classe pode ser usada para criar um novo arquivo em Java. Quando inicializamos um objeto File, fornecemos o nome do arquivo e depois podemos chamar o métodocreateNewFile()
para criar um novo arquivo em Java. O métodocreateNewFile()
da classe File retornatrue
se o novo arquivo for criado efalse
se o arquivo já existir. Esse método também lança uma java.io.IOException quando não é possível criar o arquivo. Os arquivos criados são vazios e têm zero bytes. Ao criar o objeto File passando o nome do arquivo, podemos usar caminho absoluto ou fornecer apenas o nome do arquivo ou fornecer o caminho relativo. Para um caminho não absoluto, o objeto File tenta localizar arquivos no diretório raiz do projeto. Se executarmos o programa a partir da linha de comando, para o caminho não absoluto, o objeto File tenta localizar arquivos no diretório atual. Ao criar o caminho do arquivo, devemos usar a propriedade do sistemafile.separator
para tornar nosso programa independente de plataforma. Vamos ver diferentes cenários com um programa Java simples para criar um novo arquivo em Java.package com.journaldev.files; import java.io.File; import java.io.IOException; public class CreateNewFile { /** * Esta classe mostra como criar um arquivo em Java * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String fileSeparator = System.getProperty("file.separator"); //nome absoluto do arquivo com caminho String absoluteFilePath = fileSeparator+"Users"+fileSeparator+"pankaj"+fileSeparator+"file.txt"; File file = new File(absoluteFilePath); if(file.createNewFile()){ System.out.println(absoluteFilePath+" Arquivo Criado"); }else System.out.println("Arquivo "+absoluteFilePath+" já existe"); //apenas o nome do arquivo file = new File("file.txt"); if(file.createNewFile()){ System.out.println("file.txt Arquivo Criado no diretório raiz do projeto"); }else System.out.println("Arquivo file.txt já existe no diretório raiz do projeto"); //caminho relativo String relativePath = "tmp"+fileSeparator+"file.txt"; file = new File(relativePath); if(file.createNewFile()){ System.out.println(relativePath+" Arquivo Criado no diretório raiz do projeto"); }else System.out.println("Arquivo "+relativePath+" já existe no diretório raiz do projeto"); } }
Ao executarmos o programa acima pelo Eclipse IDE pela primeira vez, a saída abaixo é produzida.
/Users/pankaj/file.txt Arquivo Criado file.txt Arquivo Criado no diretório raiz do projeto Exceção na thread "main" java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32)
Para o caminho relativo, ele lança IOException porque o diretório
tmp
não está presente na pasta raiz do projeto. Então fica claro quecreateNewFile()
apenas tenta criar o arquivo e qualquer diretório, seja absoluto ou relativo, deve estar presente antecipadamente, senão ele lançaIOException
. Então, criei o diretório “tmp” na raiz do projeto e executei o programa novamente, aqui está a saída.Arquivo /Users/pankaj/file.txt já existe Arquivo file.txt já existe no diretório raiz do projeto tmp/file.txt Arquivo Criado no diretório raiz do projeto
Os dois primeiros arquivos já estavam presentes, então
createNewFile()
retornafalse
, o terceiro arquivo foi criado no diretório tmp e retorna true. Qualquer execução subsequente resulta na seguinte saída:Arquivo /Users/pankaj/file.txt já existe Arquivo file.txt já existe no diretório raiz do projeto Arquivo tmp/file.txt já existe no diretório raiz do projeto
Se você executar o mesmo programa a partir do diretório de classes no terminal, aqui está a saída.
//primeira execução a partir do diretório de saída das classes pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Arquivo /Users/pankaj/file.txt já existe file.txt Arquivo Criado no diretório raiz do projeto Exceção na thread "main" java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:947) at com.journaldev.files.CreateNewFile.main(CreateNewFile.java:32) //diretório tmp não existe, vamos criá-lo pankaj:~/CODE/JavaFiles/bin$ mkdir tmp //segunda execução pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Arquivo /Users/pankaj/file.txt já existe Arquivo file.txt já existe no diretório raiz do projeto tmp/file.txt Arquivo Criado no diretório raiz do projeto //terceira e subsequentes execuções pankaj:~/CODE/JavaFiles/bin$ java com/journaldev/files/CreateNewFile Arquivo /Users/pankaj/file.txt já existe Arquivo file.txt já existe no diretório raiz do projeto Arquivo tmp/file.txt já existe no diretório raiz do projeto
-
FileOutputStream.write(byte[] b)
Se você quer criar um novo arquivo e ao mesmo tempo escrever alguns dados nele, você pode usar o método write do FileOutputStream. Abaixo está um trecho de código simples para mostrar sua utilização. As regras para caminho absoluto e caminho relativo discutidas acima são aplicáveis também neste caso.
String fileData = "Pankaj Kumar"; FileOutputStream fos = new FileOutputStream("name.txt"); fos.write(fileData.getBytes()); fos.flush(); fos.close();
-
Java NIO Files.write()
Podemos usar a classe Java NIO Files para criar um novo arquivo e escrever alguns dados nele. Esta é uma boa opção porque não precisamos nos preocupar com o fechamento de recursos de IO.
String fileData = "Pankaj Kumar"; Files.write(Paths.get("name.txt"), fileData.getBytes());
Isso é tudo para criar um novo arquivo no programa Java.
Você pode conferir mais exemplos de Java básico em nosso Repositório no GitHub.
Source:
https://www.digitalocean.com/community/tutorials/java-create-new-file