elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Clase para Escribir en Archivos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Clase para Escribir en Archivos  (Leído 1,507 veces)
Nasty35

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Clase para Escribir en Archivos
« en: 4 Octubre 2012, 21:13 pm »

¡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
  1. package nfile;
  2.  
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7.  
  8. import java.nio.ByteBuffer;
  9. import java.nio.CharBuffer;
  10. import java.nio.channels.WritableByteChannel;
  11. import java.nio.charset.CharacterCodingException;
  12. import java.nio.charset.Charset;
  13. import java.nio.charset.CharsetEncoder;
  14.  
  15. public class NFileWriter {
  16.  
  17. private CharsetEncoder encoder;
  18. private WritableByteChannel out;
  19. private StringBuilder text;
  20.  
  21. public NFileWriter(String file, Boolean rewrite) {
  22. encoder = Charset.forName("UTF-8").newEncoder();
  23. try {
  24. out = new FileOutputStream(new File(file), rewrite).getChannel();
  25. } catch (FileNotFoundException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29.  
  30. public void write(String str) {
  31. text.append(str);
  32. }
  33.  
  34. public void newLine() {
  35. text.append("\n");
  36. }
  37.  
  38. public void flush() {
  39. try {
  40. out.write(parseByte(text.toString()));
  41. } catch (IOException e) {
  42. e.printStackTrace();
  43. }
  44. }
  45.  
  46. public void close() {
  47. out = null;
  48. try {
  49. out.close();
  50. } catch (IOException e) {
  51. e.printStackTrace();
  52. }
  53. }
  54.  
  55. private ByteBuffer parseByte(String str) {
  56. ByteBuffer buf = null;
  57.    try {
  58.     buf = encoder.encode(CharBuffer.wrap(str));
  59. } catch (CharacterCodingException e) {
  60. e.printStackTrace();
  61. }
  62.    return buf;
  63. }
  64.  
  65. }

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
  1. NFileWriter out = new NFileWriter("lol.txt", true);
  2. out.write("lol");
  3. out.newLine();
  4. out.flush();
  5.                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)


« Última modificación: 4 Octubre 2012, 22:38 pm por Nasty35 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines