ধরুন তিনটি ফাইল আছে:
output1.txt
Hello how are you
output2.txt
Welcome to Tutorialspoint
output3.txt
We provide simply easy learning
উদাহরণ ১
নিচের জাভা উদাহরণ উপরের তিনটি ফাইলের কন্টেন্ট অল্টারনেটিভলি একটি সিঙ্গেল ফাইলে মার্জ করে।
import java.util.Scanner;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class MergingFiles {
public static void main(String args[]) throws IOException {
Scanner sc1 = new Scanner(new File("D://input1.txt"));
Scanner sc2 = new Scanner(new File("D://input2.txt"));
Scanner sc3 = new Scanner(new File("D://input3.txt"));
FileWriter writer = new FileWriter("D://result.txt");
String str[] = new String[3];
while (sc1.hasNextLine() || sc2.hasNextLine() || sc3.hasNextLine()) {
str[0] = sc1.hasNextLine() ? sc1.nextLine() : "";
str[1] = sc2.hasNextLine() ? sc2.nextLine() : "";
str[2] = sc3.hasNextLine() ? sc3.nextLine() : "";
writer.append(str[0] + "\n");
writer.append(str[1] + "\n");
writer.append(str[2] + "\n");
}
writer.flush();
System.out.println("Contents added");
}
}
নোট: মূল কোডে লুপের ভেতরে writer.append ছিল না, যা বাগ। উপরের কোডে ফিক্স করা হয়েছে।
উদাহরণ ২: একই ডিরেক্টরির সব ফাইল মার্জ করা
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class MergingFiles {
public static void main(String args[]) throws IOException {
File directoryPath = new File("D:\\example");
File filesList[] = directoryPath.listFiles();
Scanner sc = null;
FileWriter writer = new FileWriter("D://output.txt");
for (File file : filesList) {
if (file.isFile()) {
sc = new Scanner(file);
while (sc.hasNextLine()) {
String input = sc.nextLine();
writer.append(input + "\n");
}
writer.flush();
}
}
System.out.println("Contents added");
}
}
আউটপুট
Contents added
সারসংক্ষেপ: প্রথম উদাহরণে তিনটি ফাইলের লাইন বাই লাইন অল্টারনেট করা হয়েছে। দ্বিতীয় উদাহরণে একই ডিরেক্টরির সব ফাইল সিকোয়েনশিয়ালি মার্জ করা হয়েছে। FileWriter এবং Scanner ব্যবহার করা হয়েছে।