find duplicate lines and delete inoutput file, also display on console. java program.
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class FileDuplicateRemover {
public static void main(String[] args) {
String inputFilePath = "C:\\Deviprasad\\input\\example.txt";
String fileName = "example.txt"; // input file
// String outputDir = "C:\\Deviprasad\\output\\";
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String outputFilePath = "C:\\Deviprasad\\output\\"+"example_" + timestamp + ".txt";
Set<String> uniqueLines = new LinkedHashSet<>();
Map<String, List<Integer>> duplicates = new LinkedHashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(inputFilePath));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFilePath))) {
String line;
int lineNumber = 1;
while ((line = reader.readLine()) != null) {
String trimmedLine = line.trim();
if (!trimmedLine.isEmpty()) {
if (!uniqueLines.contains(trimmedLine)) {
uniqueLines.add(trimmedLine);
} else {
duplicates.computeIfAbsent(trimmedLine, k -> new ArrayList<>()).add(lineNumber);
}
}
lineNumber++;
}
// Write only unique lines to output file
for (String uniqueLine : uniqueLines) {
writer.write(uniqueLine);
writer.newLine();
}
// Display duplicate lines and row numbers
if (!duplicates.isEmpty()) {
System.out.println("Duplicate lines found:");
for (Map.Entry<String, List<Integer>> entry : duplicates.entrySet()) {
System.out.println("Line: \"" + entry.getKey() + "\" repeated at rows " + entry.getValue());
}
} else {
System.out.println("No duplicate lines found.");
}
System.out.println("Output file created: " + outputFilePath);
} catch (IOException e) {
System.err.println("Error: " + e.getMessage());
}
}
}
