Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/05/2014, 12:27
martin0290
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Editar y imprimir archivo RTF

Bueno me auto respondo, aca la solucion capas alguno le sirve:



Código:
    public void imprimirRemito() {
        File remito = null;
        FileReader fr = null;

        try {

            remito = new File("remitos.rtf");
            fr = new FileReader(remito);

            StringBuilder out = new StringBuilder();
            int longitud = (int) remito.length();
            char[] buffer = new char[longitud];

            fr.read(buffer, 0, longitud);
            StringBuilder builder = out.append(buffer, 0, longitud);

            
            UtilidadesArchivo.replaceAll(builder, "#fecha#", "2014-05-02"); //Remplazar etiqueta
            
            UtilidadesArchivo.copiarArchivo(builder, "remitos_tmp.rtf"); //Crear archivo apartir de un StringBuilder
            
            

        } catch (IOException e) {
        } finally {
            try {
                if (null != fr) {
                    fr.close();
                }
            } catch (IOException e2) {
            }
        }

    }

Código:
    public static void replaceAll(StringBuilder builder, String cadena, String remplazo) {
        int index = builder.indexOf(cadena);
        while (index != -1) {
            builder.replace(index, index + cadena.length(), remplazo);
            index += remplazo.length(); // Move to the end of the replacement
            index = builder.indexOf(cadena, index);
        }
    }
Código:
    public static void copiarArchivo(StringBuilder builder, String rutaDestino) {

        try {
            File archivoDestino = new File(rutaDestino);
            FileOutputStream out;

            try (ByteArrayInputStream in = new ByteArrayInputStream(builder.toString().getBytes())) {
                out = new FileOutputStream(archivoDestino);
                byte[] buffer = new byte[8192];
                int len;
                while ((len = in.read(buffer)) > 0) {
                    out.write(buffer, 0, len);
                }

            }
            out.close();
        } catch (IOException e) {
            System.err.println("Hubo un error de entrada/salida!!!");
        }
        
    }


Lo que hace es remplazar la cadena y luego crear un archivo apartir de un StringBuilder

Saludos!