11

重複の可能性:
ファイルの内容からJava文字列を作成する方法

情報を抽出するために使用したいhtmlファイルがあります。そのために私はJsoupを使用しています。Jsoupを使用するには、htmlファイルを文字列に変換する必要があります。どうやってやるの?

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

ここで、htmlファイル内のコンテンツを含むStringオブジェクトが必要です。

4

7 に答える 7

31

私はapachecommonIOを使用して、テキストファイルを単一の文字列に読み込みます

String str = FileUtils.readFileToString(file);

シンプルで「クリーン」。手間をかけずにテキストファイルのエンコーディングを設定することもできます。

String str = FileUtils.readFileToString(file, "UTF-8");
于 2012-09-24T06:35:57.587 に答える
13

GuavaCommons/IOなどのライブラリを使用します。彼らはワンライナーメソッドを持っています。

グアバ:

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);
}
于 2012-09-24T06:37:34.320 に答える
8

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チュートリアルの対応するセクションを確認することをお勧めします(以前のJavaを使用している場合も同様です)。

他の人が指摘しているように、simeサードパーティライブラリ(Apache commons I / OやGuavaなど)が役立つ場合があります。

于 2012-09-24T06:35:29.780 に答える
4

ファイルinputstreamを使用してファイルを読み込み、ファイルの内容を文字列に追加します。

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();
            }
        }
    }
}
于 2012-09-24T06:47:18.830 に答える
0

のすべての内容を次のようにコピーできmyhtmlますString

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

もちろん、catch例外を適切に処理するためにブロックを追加することもできます。

于 2012-09-24T06:36:17.127 に答える
0

ちなみに、Jsoupにはファイルを受け取るメソッドがあります:http://jsoup.org/apidocs/org/jsoup/Jsoup.html#parse(java.io.File、%20java.lang.String

于 2012-09-24T06:36:31.860 に答える
-1

ファイルを1行ずつ読み取って、StringBufferに追加しないのはなぜですか?

ファイルの終わりに達した後、StringBufferから文字列を取得できます。

于 2012-09-24T06:35:59.833 に答える