18

私はいくつかの.txtファイルを持っています。それらを連結してテキストファイルを生成したいと思います。
Javaでどうすればいいですか?


以下はケースです

file1.txt file2.txt 

連結結果

file3.txt

内容file1.txt後にfile2.txt.

4

5 に答える 5

35

Apache Commons IO の使用

Apache Commons IOライブラリを使用できます。これにはFileUtilsクラスがあります。

// Files to read
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");

// File to write
File file3 = new File("file3.txt");

// Read the file as string
String file1Str = FileUtils.readFileToString(file1);
String file2Str = FileUtils.readFileToString(file2);

// Write the file
FileUtils.write(file3, file1Str);
FileUtils.write(file3, file2Str, true); // true for append

このクラスには、より最適な方法 (たとえば、ストリームまたはリストを使用) でタスクを達成するのに役立つ他のメソッドもあります。

Java 7+ の使用

Java 7 以降を使用している場合

public static void main(String[] args) throws Exception {
    // Input files
    List<Path> inputs = Arrays.asList(
            Paths.get("file1.txt"),
            Paths.get("file2.txt")
    );

    // Output file
    Path output = Paths.get("file3.txt");

    // Charset for read and write
    Charset charset = StandardCharsets.UTF_8;

    // Join files (lines)
    for (Path path : inputs) {
        List<String> lines = Files.readAllLines(path, charset);
        Files.write(output, lines, charset, StandardOpenOption.CREATE,
                StandardOpenOption.APPEND);
    }
}
于 2012-05-20T17:55:04.923 に答える
17

ファイルごとに読み取り、ターゲット ファイルに書き込みます。次のようなもの:

    OutputStream out = new FileOutputStream(outFile);
    byte[] buf = new byte[n];
    for (String file : files) {
        InputStream in = new FileInputStream(file);
        int b = 0;
        while ( (b = in.read(buf)) >= 0)
            out.write(buf, 0, b);
        in.close();
    }
    out.close();
于 2012-05-20T17:19:44.277 に答える
4

これは私にとってはうまくいきます。

// open file input stream to the first file file2.txt
InputStream in = new FileInputStream("file1.txt");
byte[] buffer = new byte[1 << 20];  // loads 1 MB of the file
// open file output stream to which files will be concatenated. 
OutputStream os = new FileOutputStream(new File("file3.txt"), true);
int count;
// read entire file1.txt and write it to file3.txt
while ((count = in.read(buffer)) != -1) {
    os.write(buffer, 0, count);
    os.flush();
}
in.close();
// open file input stream to the second file, file2.txt
in = new FileInputStream("file2.txt");
// read entire file2.txt and write it to file3.txt
while ((count = in.read(buffer)) != -1) {
    os.write(buffer, 0, count);
    os.flush();
}
in.close();
os.close();
于 2012-05-20T17:29:57.637 に答える
1

他のテキスト ファイルの内容を含む 1 つのファイルが必要ということですか? 次に、すべてのファイルを読み取り (ループで実行できます)、その内容を StringBuffer/ArrayList に保存し、StringBuffer/ArrayList に保存されたテキストを最終的な .txt ファイルにフラッシュして、最終的な .txt ファイルを生成します。

心配しないでください。これは簡単な作業です。与えられたシステムに慣れるだけでOKです:)

于 2012-05-20T17:16:31.417 に答える
0

宿題みたい...

  1. ファイル 1 を開く
  2. ファイル 2 を開く
  3. ファイル 3 を作成/開く
  4. ファイル 1 から読み取り、ファイル 3 に書き込みます
  5. ファイル 1 を閉じる
  6. ファイル 2 から読み取り、ファイル 3 に書き込む
  7. ファイル 2 を閉じる
  8. ファイル 3 を閉じる

Java でファイルを作成/オープン/読み取り/書き込み/クローズする方法を知る必要がある場合は、ドキュメントを検索してください。その情報は広く利用可能であるべきです。

于 2012-05-20T17:16:07.267 に答える