Java criar novo arquivo

Criar um arquivo é uma operação de IO muito comum. Hoje vamos explorar 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 examiná-los um por um.

  1. File.createNewFile()

    java.io.File classe pode ser usada para criar um novo arquivo em Java. Quando inicializamos o objeto File, fornecemos o nome do arquivo e então 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. Este método também lança uma java.io.IOException quando não consegue criar o arquivo. Os arquivos criados estão vazios e têm zero bytes. Ao criar o objeto File, passando o nome do arquivo, ele pode ser com caminho absoluto, ou podemos fornecer apenas o nome do arquivo ou 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 a partir do diretório atual. Ao criar o caminho do arquivo, devemos usar a propriedade do Sistema file.separator para tornar nosso programa independente da 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 executar o programa acima a partir do Eclipse IDE pela primeira vez, a seguinte saída é 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, lança IOException porque o diretório tmp não está presente na pasta raiz do projeto. Portanto, fica claro que createNewFile() apenas tenta criar o arquivo e qualquer diretório, seja absoluto ou relativo, deve estar presente antecipadamente, caso contrário, lança IOException. Então, criei o diretório “tmp” na pasta 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 do terminal, aqui está a saída.

    //primeira execução 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)
    
    //o 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ê deseja criar um novo arquivo e ao mesmo tempo escrever alguns dados nele, você pode usar o método write do FileOutputStream. Abaixo está um exemplo simples de código para mostrar seu uso. As regras para caminho absoluto e relativo discutidas acima também são aplicáveis 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()

    Pode-se 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 dos recursos de E/S.

    String dadosDoArquivo = "Pankaj Kumar";
    Files.write(Paths.get("nome.txt"), dadosDoArquivo.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