Java criar novo arquivo

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.

  1. 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étodo createNewFile() para criar um novo arquivo em Java. O método createNewFile() da classe File retorna true se o novo arquivo for criado e false 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 sistema file.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 que createNewFile() apenas tenta criar o arquivo e qualquer diretório, seja absoluto ou relativo, deve estar presente antecipadamente, senão ele lança IOException. 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() retorna false, 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
    
  2. 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();
    
  3. 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