import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class HeaderDiff {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter path to first header file: ");
String file1Path = scanner.nextLine();
System.out.print("Enter path to second header file: ");
String file2Path = scanner.nextLine();
try {
Map<String, Integer> headers1 = parseHeaders(file1Path);
Map<String, Integer> headers2 = parseHeaders(file2Path);
if (headers1.equals(headers2)) {
System.out.println("Header files are identical.");
} else {
System.out.println("Header files differ:");
printDifferences(headers1, headers2);
}
} catch (IOException e) {
System.err.println("Error reading files: " + e.getMessage());
} finally {
scanner.close();
}
}
// Parses header file and returns a map of header name to line number
private static Map<String, Integer> parseHeaders(String filePath) throws IOException {
Map<String, Integer> headers = new HashMap<>();
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
int lineNumber = 0;
while ((line = reader.readLine()) != null) {
lineNumber++;
String trimmedLine = line.trim();
if (trimmedLine.startsWith("#include")) {
String headerName = trimmedLine.substring(9).trim(); // Extract header name
headers.put(headerName, lineNumber);
}
}
}
return headers;
}
// Prints the differences between the two header maps
private static void printDifferences(Map<String, Integer> headers1, Map<String, Integer> headers2) {
System.out.println(" Headers in file 1:");
for (Map.Entry<String, Integer> entry : headers1.entrySet()) {
System.out.println(" " + entry.getKey() + " at line " + entry.getValue());
}
System.out.println("\n Headers in file 2:");
for (Map.Entry<String, Integer> entry : headers2.entrySet()) {
System.out.println(" " + entry.getKey() + " at line " + entry.getValue());
}
}
}
Add your comment