Cómo escribir un archivo de texto Java

El siguiente código no produce un archivo (no puedo ver el archivo en ninguna parte). ¿Lo que falta?

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(); } 

Creo que sus expectativas y la realidad no coinciden (pero ¿cuándo lo hacen?))

Básicamente, dónde crees que está escrito el archivo y dónde está realmente escrito el archivo no son iguales (hmmm, tal vez debería escribir una sentencia 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) { } } } } 

También tenga en cuenta que su ejemplo sobrescribirá cualquier archivo existente. Si desea agregar el texto al archivo, debe hacer lo siguiente en su lugar:

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

Me gustaría agregar un poco más a MadProgrammer’s Answer.

En caso de escritura de líneas múltiples, al ejecutar el comando

 writer.write(string); 

uno puede notar que los caracteres de nueva línea se omiten o se omiten en el archivo escrito aunque aparezcan durante la depuración o si el mismo texto se imprime en la terminal con,

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

Por lo tanto, el texto completo viene como una gran parte del texto que es indeseable en la mayoría de los casos. El carácter de nueva línea puede depender de la plataforma, por lo que es mejor obtener este carácter de las propiedades del sistema de Java usando

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

y luego usar la variable nueva en lugar de “\ n”. Esto obtendrá la salida de la manera que lo desee.

En java 7 ahora puede hacer

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

y w.close se hará automáticamente

No está creando un archivo porque nunca creaste realmente el archivo. Hiciste un objeto para eso. Crear una instancia no crea el archivo.

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

Puedes hacer esto para hacer un archivo:

 newFile.createNewFile(); 

Puedes hacer esto para hacer una carpeta:

 newFile.mkdir(); 

Puedes probar una biblioteca de Java. FileUtils , tiene muchas funciones que escriben en archivos.

Sí funciona conmigo Asegúrese de agregar “.txt” junto a timeLog. Lo usé en un progtwig simple abierto con Netbeans y escribe el progtwig en la carpeta principal (donde están las carpetas de constructor y src).