Come scrivere il file di testo Java

Il seguente codice non produce un file (non riesco a vedere il file da nessuna parte). Che cosa manca?

try { //create a temporary file String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format( Calendar.getInstance().getTime()); File logFile=new File(timeLog); BufferedWriter writer = new BufferedWriter(new FileWriter(logFile)); writer.write (string); //Close writer writer.close(); } catch(Exception e) { e.printStackTrace(); } 

Penso che le tue aspettative e la realtà non coincidano (ma quando mai lo fanno)))

Fondamentalmente, dove pensi che il file sia scritto e dove il file sia effettivamente scritto non sono uguali (hmmm, forse dovrei scrivere un’istruzione if ;))

 public class TestWriteFile { public static void main(String[] args) { BufferedWriter writer = null; try { //create a temporary file String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); File logFile = new File(timeLog); // This will output the full path where the file will be written to... System.out.println(logFile.getCanonicalPath()); writer = new BufferedWriter(new FileWriter(logFile)); writer.write("Hello world!"); } catch (Exception e) { e.printStackTrace(); } finally { try { // Close the writer regardless of what happens... writer.close(); } catch (Exception e) { } } } } 

Si noti inoltre che l’esempio sovrascriverà qualsiasi file esistente. Se si desidera aggiungere il testo al file, si dovrebbe invece:

 writer = new BufferedWriter(new FileWriter(logFile, true)); 

Vorrei aggiungere un po ‘di più alla risposta di MadProgrammer.

In caso di scrittura a più righe, durante l’esecuzione del comando

 writer.write(string); 

si può notare che i caratteri di nuova riga vengono omessi o saltati nel file scritto anche se compaiono durante il debug o se lo stesso testo viene stampato sul terminale con,

 System.out.println("\n"); 

Pertanto, l’intero testo viene presentato come una grossa porzione di testo, che nella maggior parte dei casi è indesiderabile. Il carattere di nuova riga può dipendere dalla piattaforma, quindi è meglio ottenere questo carattere dalle proprietà del sistema java usando

 String newline = System.getProperty("line.separator"); 

e quindi usando la variabile newline invece di “\ n”. Ciò otterrà l’output nel modo desiderato.

In Java 7 ora può fare

 try(BufferedWriter w = ....) { w.write(...); } catch(IOException) { } 

e w.close sarà fatto automaticamente

Non sta creando un file perché non hai mai effettivamente creato il file. Hai fatto un object per questo. La creazione di un’istanza non crea il file.

 File newFile = new File("directory", "fileName.txt"); 

Puoi farlo per creare un file:

 newFile.createNewFile(); 

Puoi farlo per creare una cartella:

 newFile.mkdir(); 

Puoi provare una libreria Java. FileUtils , ha molte funzioni che scrivono in File.

Funziona con me. Accertati di aggiungere “.txt” accanto a timeLog. L’ho usato in un semplice programma aperto con Netbeans e scrive il programma nella cartella principale (dove sono presenti le cartelle builder e src).