【问题标题】:Java: How to convert a File object to a String object in java? [duplicate]Java:如何在 java 中将 File 对象转换为 String 对象? [复制]
【发布时间】:2012-09-15 14:39:45
【问题描述】:

可能重复:
How to create a Java String from the contents of a file

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

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

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

【问题讨论】:

  • 逐个字符读取文件并将每个字符放入一个StringBuffer中。完成后向 StringBuffer 询问字符串。
  • 检查 jsoup api。它具有获取文件的parse 方法。您无需手动读取文件内容。

标签: java


【解决方案1】:

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

String str = FileUtils.readFileToString(file);

简单而“干净”。您甚至可以轻松设置文本文件的编码。

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

【讨论】:

  • 你会怎么做相反的... readStringToFile
  • 附加链接已过期,能发最新网址吗?
  • FileUtils.readFileToString 现在已在 Java 8 中弃用。不再建议使用这种方式。
【解决方案2】:

使用GuavaCommons / IO 之类的库。他们有 oneliner 方法。

番石榴:

Files.toString(file, charset);

公用/IO:

FileUtils.readFileToString(file, charset);

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

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

【讨论】:

  • Files.toString@Deprecated,所以Guava 中的现代方式调用Files.asCharSource(file, charset).read()
  • @DmytroChasovskyi 是的。无法跟上 Guava 的弃用周期,谢谢
【解决方案3】:

使用 Java 7,就这么简单:

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

但是,它确实有一些小注意事项(例如处理不适合内存的文件)。

我建议查看官方 Java 教程中的 corresponding section(如果您有 Java 之前的情况,也是如此)。

正如其他人指出的那样,您可能会发现 sime 3rd 方库很有用(如 Apache commons I/O 或 Guava)。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

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

          到达文件末尾后,您可以从 StringBuffer 中获取字符串。

          【讨论】:

            猜你喜欢
            • 2015-08-30
            • 1970-01-01
            • 1970-01-01
            • 2012-01-19
            • 1970-01-01
            • 1970-01-01
            • 2022-11-01
            • 2010-11-07
            • 2017-09-19
            相关资源
            最近更新 更多