Em Java, tenho texto de um campo de texto em uma variável String chamada "text".
Como posso salvar o conteúdo da variável "texto" em um arquivo?
java
file
file-io
text-files
Justin White
fonte
fonte
O Apache Commons IO contém ótimos métodos para fazer isso, em particular o FileUtils contém o seguinte método:
que permite escrever texto em um arquivo em uma chamada de método:
Você também pode querer especificar a codificação do arquivo.
fonte
FileUtils.writeStringToFile(new File("test.txt"), "Hello File", forName("UTF-8"));
Dê uma olhada na API de arquivos Java
um exemplo rápido:
fonte
@Cleanup new FileOutputStream(...)
e pronto.No Java 7, você pode fazer isso:
Há mais informações aqui: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403
fonte
content.getBytes(StandardCharsets.UTF_8)
pode ser usado para definir explicitamente a codificação.Acabei de fazer algo semelhante no meu projeto. O uso do FileWriter simplificará parte do seu trabalho. E aqui você pode encontrar um bom tutorial .
fonte
.close()
não joga (pelo menos no Java 7?), O último trycatch talvez seja redundante?throw new RuntimeException(e);
Use
FileUtils.writeStringToFile()
do Apache Commons IO . Não há necessidade de reinventar essa roda em particular.fonte
Você pode modificar o código abaixo para gravar seu arquivo de qualquer classe ou função que esteja manipulando o texto. É de se perguntar por que o mundo precisa de um novo editor de texto ...
fonte
No Java 11, a
java.nio.file.Files
classe foi estendida por dois novos métodos utilitários para gravar uma string em um arquivo. O primeiro método (consulte JavaDoc aqui ) usa o conjunto de caracteres UTF-8 como padrão:E o segundo método (consulte JavaDoc aqui ) permite especificar um conjunto de caracteres individual:
Ambos os métodos têm um parâmetro Varargs opcional para definir opções de manipulação de arquivos (consulte JavaDoc aqui ). O exemplo a seguir criaria um arquivo inexistente ou anexaria a sequência a um existente:
fonte
Prefiro confiar nas bibliotecas sempre que possível para esse tipo de operação. Isso me deixa menos propenso a omitir acidentalmente um passo importante (como erro cometido pelos lobos acima). Algumas bibliotecas são sugeridas acima, mas a minha favorita para esse tipo de coisa é o Google Guava . O Goiaba possui uma classe chamada Arquivos, que funciona muito bem para esta tarefa:
fonte
Charsets.UTF-8
.Charsets.UTF_8
verdadeFiles.asCharSink(file, charset).write(text)
Use o Apache Commons IO api. É simples
Use API como
Dependência do Maven
fonte
Caso você precise criar um arquivo de texto com base em uma única sequência:
fonte
Use isto, é muito legível:
fonte
Você pode inserir esse método em suas classes. Se você estiver usando esse método em uma classe com um método principal, altere essa classe para estática adicionando a palavra-chave estática. De qualquer forma, você precisará importar o java.io. * para fazê-lo funcionar, caso contrário, File, FileWriter e BufferedWriter não serão reconhecidos.
fonte
Você poderia fazer isso:
fonte
Usando
Java 7
:fonte
Files.write(targetPath, bytes);
para substituir o arquivo então. Funcionará como esperado.Usando org.apache.commons.io.FileUtils:
fonte
Se você se preocupa apenas em enviar um bloco de texto para o arquivo, ele será sobrescrito a cada vez.
Este exemplo permite que o usuário selecione um arquivo usando um seletor de arquivos.
fonte
É melhor fechar o gravador / fluxo de saída em um bloco final, caso algo aconteça
fonte
}
fonte
Eu acho que a melhor maneira é usar
Files.write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)
:Veja javadoc :
Observe. Vejo que as pessoas já responderam com o Java embutido
Files.write
, mas o que é especial na minha resposta, que ninguém parece mencionar, é a versão sobrecarregada do método, que utiliza um Iterable de CharSequence (ou seja, String), em vez de umabyte[]
matriz, portanto,text.getBytes()
não é necessário. , que é um pouco mais limpo, eu acho.fonte
Se você deseja manter os caracteres de retorno de carro da string em um arquivo, aqui está um exemplo de código:
fonte
Meu caminho é baseado no fluxo devido à execução em todas as versões do Android e nas necessidades de recursos adequados, como URL / URI, qualquer sugestão é bem-vinda.
No que diz respeito a fluxos, os fluxos (InputStream e OutputStream) transferem dados binários, quando o desenvolvedor grava uma sequência em um fluxo, deve primeiro convertê-los em bytes ou, em outras palavras, codificá-los.
fonte
Você pode usar o ArrayList para colocar todo o conteúdo da TextArea por exemplo, e enviar como parâmetro chamando o save, como o escritor acabou de escrever as linhas da string, então usamos o "for" linha por linha para escrever nosso ArrayList no final estaremos conteúdo TextArea no arquivo txt. se algo não faz sentido, me desculpe é o google tradutor e eu que não falamos inglês.
Assista ao bloco de notas do Windows, ele nem sempre pula linhas e mostra tudo em uma linha, use o Wordpad ok.
fonte