2012-09-24 16 views
9

Powiel możliwe:
How to create a Java String from the contents of a fileJava: Jak przekonwertować obiekt File na obiekt String w java?

Mam plik HTML, którego chcesz użyć, aby wydobyć informacje. Do tego używam Jsoup. Teraz do korzystania z Jsoup, muszę przekonwertować plik html na ciąg znaków. Jak mogę to zrobić?

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

Teraz chcę obiekt String, który zawiera zawartość wewnątrz pliku html.

+3

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

+0

Czytaj charakter o pliku znak i umieść każdy znak w StringBuffer. Po zakończeniu zapytaj StringBuffer o napis. –

+2

Sprawdź api jsoup. Ma metodę "parsowania", która pobiera plik. Nie musisz ręcznie czytać zawartości pliku. –

Odpowiedz

23

używam apache common IO odczytać plik tekstowy w jeden ciąg

String str = FileUtils.readFileToString(file); 

prosty i "czysty". możesz nawet ustawić kodowanie pliku tekstowego bez kłopotów.

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

Jak byś postąpił odwrotnie ... readStringToFile –

+2

writeStringToFile? – gigadot

+0

Załączony link wygasł, czy możesz opublikować najnowszy URL? –

8

Z Java 7, to jest tak proste, jak:

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(); 

Jednakże, nie havea kilka drobnych zastrzeżenia, (jak obsługa plików, które nie mieszczą się w pamięci).

Proponuję rzucić okiem na corresponding section w oficjalnym samouczku Java (tak samo jest w przypadku wcześniejszej wersji Java).

Jak zauważyli inni, może ci się przydać korzystanie z sime bibliotek zewnętrznych (takich jak Apache commons I/O lub Guava).

0

Dlaczego po prostu nie czytać pliku wiersz po linii i dodać go do StringBuffer?

Po osiągnięciu końca pliku można uzyskać ciąg z StringBuffer.

0

można skopiować całą zawartość myhtml do String następująco:

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

Oczywiście, można dodać blok catch prawidłowo obsługiwać wyjątki.

9

użyć biblioteki jak Guava lub Commons/IO. Mają metody oneliner.

Guava:

Files.toString(file, charset); 

fotografia/IO:

FileUtils.readFileToString(file, charset); 

Bez takiej biblioteki, chciałbym napisać metodę pomocniczą, coś jak to:

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

readin pliku z plikiem inputstream i dołącz zawartość pliku do łańcucha.

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(); 
      } 
     } 
    } 
} 
Powiązane problemy