重複の可能性:
ファイルの内容からJava文字列を作成する方法
情報を抽出するために使用したいhtmlファイルがあります。そのために私はJsoupを使用しています。Jsoupを使用するには、htmlファイルを文字列に変換する必要があります。どうやってやるの?
File myhtml = new File("D:\\path\\report.html")';
ここで、htmlファイル内のコンテンツを含むStringオブジェクトが必要です。
重複の可能性:
ファイルの内容からJava文字列を作成する方法
情報を抽出するために使用したいhtmlファイルがあります。そのために私はJsoupを使用しています。Jsoupを使用するには、htmlファイルを文字列に変換する必要があります。どうやってやるの?
File myhtml = new File("D:\\path\\report.html")';
ここで、htmlファイル内のコンテンツを含むStringオブジェクトが必要です。
私はapachecommonIOを使用して、テキストファイルを単一の文字列に読み込みます
String str = FileUtils.readFileToString(file);
シンプルで「クリーン」。手間をかけずにテキストファイルのエンコーディングを設定することもできます。
String str = FileUtils.readFileToString(file, "UTF-8");
GuavaやCommons/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);
}
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など)が役立つ場合があります。
ファイル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();
}
}
}
}
のすべての内容を次のようにコピーできmyhtml
ますString
。
Scanner myScanner = null;
try
{
myScanner = new Scanner(myhtml);
String contents = myScanner.useDelimiter("\\Z").next();
}
finally
{
if(myScanner != null)
{
myScanner.close();
}
}
もちろん、catch
例外を適切に処理するためにブロックを追加することもできます。
ちなみに、Jsoupにはファイルを受け取るメソッドがあります:http://jsoup.org/apidocs/org/jsoup/Jsoup.html#parse(java.io.File、%20java.lang.String)
ファイルを1行ずつ読み取って、StringBufferに追加しないのはなぜですか?
ファイルの終わりに達した後、StringBufferから文字列を取得できます。