Acabo de crear una clase simple para escribir/sobre-escribir en archivos de texto, usando Java.Nio.
Aquí el código:
Código
package nfile; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.WritableByteChannel; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; public class NFileWriter { private CharsetEncoder encoder; private WritableByteChannel out; private StringBuilder text; encoder = Charset.forName("UTF-8").newEncoder(); try { e.printStackTrace(); } } text.append(str); } public void newLine() { text.append("\n"); } public void flush() { try { out.write(parseByte(text.toString())); e.printStackTrace(); } } public void close() { out = null; try { out.close(); e.printStackTrace(); } } ByteBuffer buf = null; try { buf = encoder.encode(CharBuffer.wrap(str)); } catch (CharacterCodingException e) { e.printStackTrace(); } return buf; } }
Explicación de cada función:
- Primero creas el constructor, con dos parámetros, un string indicando donde está el archivo que quieres editar, y un booleano, si indicas true se escribirá a partir del que están, sin borrar nada, pero si indicas false, se sobre-escribirá, como si se borrase todo y se pusiese lo escrito.
- Con el write puedes añadir texto a un 'buffer'.
- Con el newLine puedes añadir una nueva línea para escribir en ella.
- Con el flush se liberará todo lo que está en el 'buffer' y se escribirá, todo lo que hay en write se almacena en una variable, y con flush todo lo sueltas para enviarlo al archivo.
- El close para cerrar el canal cuando dejes de gestionar con él.
Ejemplo en código:
Código
En el archivo lol.txt pondrá lo que antes, pero con un 'lol' añadido, si el archivo no existido se crea, y lógicamente con el texto 'lol'.
NFileWriter out = new NFileWriter("lol.txt", true); out.write("lol"); out.newLine(); out.flush(); out.close();
Cualquier duda comenten.
(créditos hacia mí por hacer la clase)