Come posso salvare una stringa in un file di testo utilizzando Java?

In Java, ho il testo da un campo di testo in una variabile String chiamata “testo”.

Come posso salvare il contenuto della variabile “testo” in un file?

Se stai semplicemente inviando testo, piuttosto che qualsiasi dato binario, il seguente funzionerà:

PrintWriter out = new PrintWriter("filename.txt"); 

Quindi, scrivi la stringa su di essa, proprio come faresti con qualsiasi stream di output:

 out.println(text); 

Avrai bisogno di una gestione delle eccezioni, come sempre. Assicurati di chiamare out.close() quando hai finito di scrivere.

Se stai utilizzando Java 7 o PrintStream successive, puoi utilizzare l’ istruzione ” try-with-resources ” che chiuderà automaticamente PrintStream quando hai finito (es. Esci dal blocco) in questo modo:

 try (PrintWriter out = new PrintWriter("filename.txt")) { out.println(text); } 

Dovrai comunque lanciare esplicitamente java.io.FileNotFoundException come prima.

Apache Commons IO contiene alcuni ottimi metodi per farlo, in particolare FileUtils contiene il seguente metodo:

 static void writeStringToFile(File file, String data) 

che ti permette di scrivere testo in un file in una chiamata di metodo:

 FileUtils.writeStringToFile(new File("test.txt"), "Hello File"); 

Si potrebbe anche voler considerare di specificare anche la codifica per il file.

Dai un’occhiata all’API del file Java

un rapido esempio:

 try (PrintStream out = new PrintStream(new FileOutputStream("filename.txt"))) { out.print(text); } 

Ho appena fatto qualcosa di simile nel mio progetto. Usa FileWriter semplificherà parte del tuo lavoro. E qui puoi trovare un bel tutorial .

 BufferedWriter writer = null; try { writer = new BufferedWriter( new FileWriter( yourfilename)); writer.write( yourstring); } catch ( IOException e) { } finally { try { if ( writer != null) writer.close( ); } catch ( IOException e) { } } 

In Java 7 puoi fare questo:

 String content = "Hello File!"; String path = "C:/a.txt"; Files.write( Paths.get(path), content.getBytes(), StandardOpenOption.CREATE); 

C’è più informazioni qui: http://www.drdobbs.com/jvm/java-se-7-new-file-io/231600403

Usa FileUtils.writeStringToFile() da Apache Commons IO . Non c’è bisogno di reinventare questa particolare ruota.

Puoi usare la modifica del codice qui sotto per scrivere il tuo file da qualunque class o funzione stia gestendo il testo. Ci si chiede però perché il mondo abbia bisogno di un nuovo editor di testo …

 import java.io.*; public class Main { public static void main(String[] args) { try { String str = "SomeMoreTextIsHere"; File newTextFile = new File("C:/thetextfile.txt"); FileWriter fw = new FileWriter(newTextFile); fw.write(str); fw.close(); } catch (IOException iox) { //do stuff with exception iox.printStackTrace(); } } } 

Usa Apache Commons IO api. È semplice

Usa API come

  FileUtils.writeStringToFile(new File("FileNameToWrite.txt"), "stringToWrite"); 

Dipendenza da Maven

  commons-io commons-io 2.4  

Preferisco fare affidamento sulle librerie quando ansible per questo tipo di operazione. Questo mi rende meno probabile che accidentalmente ometti un passaggio importante (come l’errore wolfsnipes fatto sopra). Alcune librerie sono suggerite sopra, ma il mio preferito per questo genere di cose è Google Guava . Guava ha una class chiamata Files che funziona bene per questo compito:

 // This is where the file goes. File destination = new File("file.txt"); // This line isn't needed, but is really useful // if you're a beginner and don't know where your file is going to end up. System.out.println(destination.getAbsolutePath()); try { Files.write(text, destination, Charset.forName("UTF-8")); } catch (IOException e) { // Useful error handling here } 

Nel caso in cui sia necessario creare un file di testo basato su una singola stringa:

 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; public class StringWriteSample { public static void main(String[] args) { String text = "This is text to be saved in file"; try { Files.write(Paths.get("my-file.txt"), text.getBytes()); } catch (IOException e) { e.printStackTrace(); } } } 
 import java.io.*; private void stringToFile( String text, String fileName ) { try { File file = new File( fileName ); // if file doesnt exists, then create it if ( ! file.exists( ) ) { file.createNewFile( ); } FileWriter fw = new FileWriter( file.getAbsoluteFile( ) ); BufferedWriter bw = new BufferedWriter( fw ); bw.write( text ); bw.close( ); //System.out.println("Done writing to " + fileName); //For testing } catch( IOException e ) { System.out.println("Error: " + e); e.printStackTrace( ); } } //End method stringToFile 

Puoi inserire questo metodo nelle tue classi. Se si utilizza questo metodo in una class con un metodo principale, modificare questa class in static aggiungendo la parola chiave statica. In entrambi i casi sarà necessario importare java.io. * per farlo funzionare altrimenti File, FileWriter e BufferedWriter non verranno riconosciuti.

Usa questo, è molto leggibile:

 import java.nio.file.Files; import java.nio.file.Paths; Files.write(Paths.get(path), lines.getBytes(), StandardOpenOption.WRITE); 

Potresti fare questo:

 import java.io.*; import java.util.*; class WriteText { public static void main(String[] args) { try { String text = "Your sample content to save in a text file."; BufferedWriter out = new BufferedWriter(new FileWriter("sample.txt")); out.write(text); out.close(); } catch (IOException e) { System.out.println("Exception "); } return ; } }; 

Utilizzo di Java 7 :

 public static void writeToFile(String text, String targetFilePath) throws IOException { Path targetPath = Paths.get(targetFilePath); byte[] bytes = text.getBytes(StandardCharsets.UTF_8); Files.write(targetPath, bytes, StandardOpenOption.CREATE); } 

Utilizzo di org.apache.commons.io.FileUtils:

 FileUtils.writeStringToFile(new File("log.txt"), "my string", Charset.defaultCharset()); 

Se ti interessa solo spingere un blocco di testo in un file, questo lo sovrascriverà ogni volta.

 JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showSaveDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { FileOutputStream stream = null; PrintStream out = null; try { File file = chooser.getSelectedFile(); stream = new FileOutputStream(file); String text = "Your String goes here"; out = new PrintStream(stream); out.print(text); //This will overwrite existing contents } catch (Exception ex) { //do something } finally { try { if(stream!=null) stream.close(); if(out!=null) out.close(); } catch (Exception ex) { //do something } } } 

Questo esempio consente all’utente di selezionare un file usando un selettore di file.

È meglio chiudere lo scrittore / outputstream in un blocco finale, nel caso succeda qualcosa

 finally{ if(writer != null){ try{ writer.flush(); writer.close(); } catch(IOException ioe){ ioe.printStackTrace(); } } } 

Puoi usare ArrayList per mettere tutto il contenuto di TextArea per esempio e inviarlo come parametro chiamando il salvataggio, poiché lo scrittore ha appena scritto le stringhe, quindi usiamo “for” riga per riga per scrivere il nostro ArrayList alla fine saremo soddisfatti di TextArea nel file txt. se qualcosa non ha senso, mi dispiace è google traduttore e io che non parlo inglese.

Guarda il Blocco note di Windows, non salta sempre le linee e mostra tutto in una riga, usa il Wordpad ok.


private void SaveActionPerformsd (java.awt.event.ActionEvent evt) {

 String NameFile = Name.getText(); ArrayList< String > Text = new ArrayList< String >(); Text.add(TextArea.getText()); SaveFile(NameFile, Text); 

}


public void SaveFile (Nome stringa, ArrayList messaggio) {

 path = "C:\\Users\\Paulo Brito\\Desktop\\" + name + ".txt"; File file1 = new File(path); try { if (!file1.exists()) { file1.createNewFile(); } File[] files = file1.listFiles(); FileWriter fw = new FileWriter(file1, true); BufferedWriter bw = new BufferedWriter(fw); for (int i = 0; i < message.size(); i++) { bw.write(message.get(i)); bw.newLine(); } bw.close(); fw.close(); FileReader fr = new FileReader(file1); BufferedReader br = new BufferedReader(fr); fw = new FileWriter(file1, true); bw = new BufferedWriter(fw); while (br.ready()) { String line = br.readLine(); System.out.println(line); bw.write(line); bw.newLine(); } br.close(); fr.close(); } catch (IOException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null, "Error in" + ex); 

}

Penso che il modo migliore sia usare le Files.write(Path path, Iterable< ? extends CharSequence> lines, OpenOption... options) :

 String text = "content"; Path path = Paths.get("path", "to", "file"); Files.write(path, Arrays.asList(text)); 

Vedi javadoc :

Scrivi linee di testo in un file. Ogni riga è una sequenza di caratteri e viene scritta nel file in sequenza con ciascuna riga terminata dal separatore di riga della piattaforma, come definito dalla proprietà di sistema line.separator. I caratteri sono codificati in byte usando il set di caratteri specificato.

Il parametro options specifica come il file viene creato o aperto. Se non sono presenti opzioni, questo metodo funziona come se fossero presenti le opzioni CREATE, TRUNCATE_EXISTING e WRITE. In altre parole, apre il file per la scrittura, crea il file se non esiste o inizialmente tronca un file regolare esistente con una dimensione pari a 0. Il metodo garantisce che il file venga chiuso quando tutte le righe sono state scritte ( oppure viene generato un errore I / O o altra eccezione di runtime). Se si verifica un errore I / O, potrebbe farlo dopo che il file è stato creato o troncato o dopo che alcuni byte sono stati scritti nel file.

Notare che. Vedo che le persone hanno già risposto con Files.write incorporato in Files.write , ma ciò che è speciale nella mia risposta che nessuno sembra menzionare è la versione sovraccaricata del metodo che accetta un Iterable di CharSequence (cioè String), invece di un byte[] array, quindi text.getBytes() non è richiesto, il che è un po ‘più pulito, credo.

Se si desidera mantenere i caratteri di ritorno a capo dalla stringa in un file, ecco un esempio di codice:

  jLabel1 = new JLabel("Enter SQL Statements or SQL Commands:"); orderButton = new JButton("Execute"); textArea = new JTextArea(); ... // String captured from JTextArea() orderButton.addActionListener(new ActionListener() { public void actionPerformsd(ActionEvent ae) { // When Execute button is pressed String tempQuery = textArea.getText(); tempQuery = tempQuery.replaceAll("\n", "\r\n"); try (PrintStream out = new PrintStream(new FileOutputStream("C:/Temp/tempQuery.sql"))) { out.print(tempQuery); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(tempQuery); } });