1. import java.io.BufferedReader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Scanner;
  9. public class HeaderDiff {
  10. public static void main(String[] args) {
  11. Scanner scanner = new Scanner(System.in);
  12. System.out.print("Enter path to first header file: ");
  13. String file1Path = scanner.nextLine();
  14. System.out.print("Enter path to second header file: ");
  15. String file2Path = scanner.nextLine();
  16. try {
  17. Map<String, Integer> headers1 = parseHeaders(file1Path);
  18. Map<String, Integer> headers2 = parseHeaders(file2Path);
  19. if (headers1.equals(headers2)) {
  20. System.out.println("Header files are identical.");
  21. } else {
  22. System.out.println("Header files differ:");
  23. printDifferences(headers1, headers2);
  24. }
  25. } catch (IOException e) {
  26. System.err.println("Error reading files: " + e.getMessage());
  27. } finally {
  28. scanner.close();
  29. }
  30. }
  31. // Parses header file and returns a map of header name to line number
  32. private static Map<String, Integer> parseHeaders(String filePath) throws IOException {
  33. Map<String, Integer> headers = new HashMap<>();
  34. try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
  35. String line;
  36. int lineNumber = 0;
  37. while ((line = reader.readLine()) != null) {
  38. lineNumber++;
  39. String trimmedLine = line.trim();
  40. if (trimmedLine.startsWith("#include")) {
  41. String headerName = trimmedLine.substring(9).trim(); // Extract header name
  42. headers.put(headerName, lineNumber);
  43. }
  44. }
  45. }
  46. return headers;
  47. }
  48. // Prints the differences between the two header maps
  49. private static void printDifferences(Map<String, Integer> headers1, Map<String, Integer> headers2) {
  50. System.out.println(" Headers in file 1:");
  51. for (Map.Entry<String, Integer> entry : headers1.entrySet()) {
  52. System.out.println(" " + entry.getKey() + " at line " + entry.getValue());
  53. }
  54. System.out.println("\n Headers in file 2:");
  55. for (Map.Entry<String, Integer> entry : headers2.entrySet()) {
  56. System.out.println(" " + entry.getKey() + " at line " + entry.getValue());
  57. }
  58. }
  59. }

Add your comment