Clase para Escribir en Archivos

Iniciado por Nasty35, 4 Octubre 2012, 21:13 PM

0 Miembros y 1 Visitante están viendo este tema.

Nasty35

¡Hola a todos!
Acabo de crear una clase simple para escribir/sobre-escribir en archivos de texto, usando Java.Nio.
Aquí el código:
Código (java) [Seleccionar]
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;

public NFileWriter(String file, Boolean rewrite) {
encoder = Charset.forName("UTF-8").newEncoder();
try {
out = new FileOutputStream(new File(file), rewrite).getChannel();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}

public void write(String str) {
text.append(str);
}

public void newLine() {
text.append("\n");
}

public void flush() {
try {
out.write(parseByte(text.toString()));
} catch (IOException e) {
e.printStackTrace();
}
}

public void close() {
out = null;
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private ByteBuffer parseByte(String str) {
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 (java) [Seleccionar]
NFileWriter out = new NFileWriter("lol.txt", true);
out.write("lol");
out.newLine();
out.flush();
                out.close();

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'.

Cualquier duda comenten.

(créditos hacia mí por hacer la clase)