Cómo convertir String a Reader en Java

2 minutos de lectura

avatar de usuario
Arasu

Tengo un método que lee un archivo y devuelve una cadena, pero quería devolver un lector. Quiero convertir la cadena en un lector, o quiero leer el archivo y devolver el lector. ¿Cómo puedo hacer esto?

  • String Reader está funcionando bien. He usado el lector de archivos en lugar de escribir mi propio método, esto es más simple. (Lector) nuevo FileReader (filePath);

    – Arasu

    19 de diciembre de 2011 a las 8:01

avatar de usuario
Bozho

Usar java.io.StringReader: return new StringReader(string);.

La próxima vez que necesite un lector, puede consultar las “Subclases conocidas directas” del Reader clase. Lo mismo ocurre con InputStreametc. El lugar para comenzar es el javadoc – contiene bastante información útil.

Pero para su tarea actual, será mejor que siga el consejo de Jon Lin de simplemente usar un FileReader. No hay necesidad de pasar String. (Para eso, mi consejo del párrafo anterior también se aplica)

  • Agregaría que si está usando Eclipse, extraer un árbol de todas las subclases conocidas para cualquier tipo es tan fácil como presionar F4 cuando el cursor está en el tipo (por ejemplo, Reader). Supongo que otros IDE están equipados de manera similar. Tremendamente útil en estas situaciones.

    – hendalst

    15 mayo 2015 a las 14:30

  • Esto responde a la literal pregunta en el título y es probablemente por qué el 90% vino aquí. Pero @JonLinLa respuesta de tiene una mejor solución para la situación específica descrita por OP.

    – Lukas Knuth

    20 de abril de 2016 a las 10:02


O simplemente puede crear un Lector de archivos y devolver eso.

  • Dice que tiene un método que lee un archivo y quiere devolver un Lector en lugar de una Cadena

    – Jon Lin

    19 de diciembre de 2011 a las 7:56

Puedes usar Lector de cadenas clase de java.io paquete.

String stringToBeParsed = "The quick brown fox jumped over the lazy dog";
StringReader reader = new StringReader(stringToBeParsed);

  • salta“, no “saltó“, de lo contrario no se utilizan los 26 caracteres ;-).

    – Tomasz Nurkiewicz

    19 de diciembre de 2011 a las 8:02

Pruebe este código de muestra,

FileInputStream in = null;
    StringBuilder sb = new StringBuilder();
    String tempString = null;
    Reader initialReader;
    try {
        in = new FileInputStream(filename);
        initialReader = new InputStreamReader(in);

        char[] arr = new char[8 * 1024];
        StringBuilder buffer = new StringBuilder();
        int numCharsRead;
        while ((numCharsRead = initialReader.read(arr, 0, arr.length)) != -1) {
            buffer.append(arr, 0, numCharsRead);
        }
        String targetString = buffer.toString();

        result = IOUtils.toByteArray(targetString);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

¿Ha sido útil esta solución?