Java:如何在java中将File对象转换为String对象?

可能重复:
如何从文件内容创建Java String

我有一个html文件,我想用它来提取信息。 为此,我正在使用Jsoup。 现在使用Jsoup,我需要将html文件转换为字符串。 我怎样才能做到这一点?

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

现在,我想要一个包含html文件内容的String对象。

我使用apache common IO将文本文件读入单个字符串

 String str = FileUtils.readFileToString(file); 

简单而“干净”。 你甚至可以毫无困难地设置文本文件的编码。

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

使用像Guava或Commons / IO这样的库。 他们有oneliner方法。

番石榴:

 Files.toString(file, charset); 

Commons / IO:

 FileUtils.readFileToString(file, charset); 

没有这样的库,我会写一个帮助方法,如下所示:

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

使用Java 7,它很简单:

 final String EoL = System.getProperty("line.separator"); List 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(); 

但是,它确实有一些小的警告(比如处理不适合内存的文件)。

我建议你看看官方Java教程中的相应部分 (如果你有一个以前的Java,那也是如此)。

正如其他人所指出的,你可能会发现sime第三方库很有用(比如Apache commons I / O或Guava)。

使用文件输入流读取文件并将文件内容附加到字符串。

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

顺便说一下,Jsoup有一个方法来获取文件: http ://jsoup.org/apidocs/org/jsoup/Jsoup.html#parse(java.io.File,%20java.lang.String)

您可以将myhtml所有内容复制到String ,如下所示:

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

当然,您可以添加一个catch块来正确处理exception。

为什么你不能逐行读取文件并将其添加到StringBuffer?

到达文件末尾后,您可以从StringBuffer获取String。