2012-09-24 25 views
9

Duplicar posible:
How to create a Java String from the contents of a fileJava: ¿Cómo convertir un objeto File a un objeto String en java?

Tengo un archivo html que quiero utilizar para extraer información. Para eso estoy usando Jsoup. Ahora, para usar Jsoup, necesito convertir el archivo html en una cadena. ¿Cómo puedo hacer eso?

File myhtml = new File("D:\\path\\report.html")'; 

Ahora, quiero un objeto String que contenga el contenido dentro del archivo html.

+3

Comprobar esto: http://stackoverflow.com/questions/326390/how-to-create-a-java-string-from-the-contents-of-a-file –

+0

Leer el carácter de archivo personaje y poner a cada personaje en un StringBuffer. Cuando termine, solicite a StringBuffer la cadena. –

+2

Comprobar jsoup api. Tiene el método 'parse' que toma el archivo. No necesita leer el contenido del archivo manualmente. –

Respuesta

23

utilizo apache common IO para leer un archivo de texto en una sola cadena

String str = FileUtils.readFileToString(file); 

simple y "limpia". incluso puede establecer la codificación del archivo de texto sin molestias.

String str = FileUtils.readFileToString(file, "UTF-8"); 
+0

¿Cómo haría lo opuesto ... readStringToFile –

+2

writeStringToFile? – gigadot

+0

El enlace adjunto ha caducado. ¿Puede publicar la última URL? –

8

Con Java 7, es tan simple como:

final String EoL = System.getProperty("line.separator"); 
List<String> lines = Files.readAllLines(Paths.get(fileName), 
     Charset.defaultCharset()); 

StringBuilder sb = new StringBuilder(); 
for (String line : lines) { 
    sb.append(line).append(EoL); 
} 
final String content = sb.toString(); 

Sin embargo, no havea algunas advertencias menores (como el manejo de archivos que no caben en la memoria).

Sugeriría echar un vistazo en corresponding section en el tutorial oficial de Java (ese es también el caso si tiene una Java anterior).

Como otros señalaron, es posible que encuentre útiles las bibliotecas de terceros (como Apache commons I/O o Guava).

0

Por qué simplemente no leer el archivo línea por línea y agregarlo a un StringBuffer?

Después de llegar al final del archivo, puede obtener la cadena del StringBuffer.

0

puede copiar todo el contenido de myhtml a String de la siguiente manera:

Scanner myScanner = null; 
try 
{ 
    myScanner = new Scanner(myhtml); 
    String contents = myScanner.useDelimiter("\\Z").next(); 
} 
finally 
{ 
    if(myScanner != null) 
    { 
     myScanner.close(); 
    } 
} 

Por supuesto, se puede añadir un bloque catch para manejar excepciones correctamente.

9

uso como una biblioteca o GuavaCommons/IO. Tienen métodos de oneliner.

Guayaba:

Files.toString(file, charset); 

Commons/IO:

FileUtils.readFileToString(file, charset); 

Sin tal biblioteca, me gustaría escribir un método de ayuda, algo como esto:

public String readFile(File file, Charset charset) throws IOException { 
    return new String(Files.readAllBytes(file.toPath()), charset); 
} 
2

archivo Readin con el archivo inputstream y anexar contenido de archivo a la cadena.

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 

public class CopyOffileInputStream { 

    public static void main(String[] args) { 

     //File file = new File("./store/robots.txt"); 
     File file = new File("swingloggingsscce.log"); 

     FileInputStream fis = null; 
     String str = ""; 

     try { 
      fis = new FileInputStream(file); 
      int content; 
      while ((content = fis.read()) != -1) { 
       // convert to char and display it 
       str += (char) content; 
      } 

      System.out.println("After reading file"); 
      System.out.println(str); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (fis != null) 
        fis.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 
} 
Cuestiones relacionadas