I have two files assume its already sorted.
This is just example data, in real ill have around 30-40 Millions of records each file Size 7-10 GB file as row length is big, and fixed.
It's a simple text file, once searched record is found. ill do some update and write to file.

***File A may contain 0 or more records of matching ID from File B***
Motive is to complete this processing in least amount of time possible.
I am able to do but its time taking process...
Suggestions are welcome.

**File A**  

1000000001,A  

1000000002,B  

1000000002,C  

1000000002,D  

1000000002,D  

1000000003,E  

1000000004,E  

1000000004,E  

1000000004,E  

1000000004,E  

1000000005,E  

1000000006,A  

1000000007,A  

1000000008,B  

1000000009,B  

1000000010,C  

1000000011,C  

1000000012,C  

**File B**  

1000000002  

1000000004  

1000000006  

1000000008  

1000000010  

1000000012  

1000000014  

1000000016  

1000000018\

```
// Not working as of now. due to logic is wrong.
    private static void readAndWriteFile() {

        System.out.println("Read Write File Started.");
        long time = System.currentTimeMillis();
        try(
                BufferedReader in = new BufferedReader(new FileReader(Commons.ROOT_PATH+"input.txt"));
                BufferedReader search = new BufferedReader(new FileReader(Commons.ROOT_PATH+"search.txt"));
                FileWriter myWriter = new FileWriter(Commons.ROOT_PATH+"output.txt");
            ) {

            String inLine = in.readLine();
            String searchLine = search.readLine();
            boolean isLoopEnd = true;
            while(isLoopEnd) {

                if(searchLine == null || inLine == null) {
                    isLoopEnd = false;
                    break;
                }

                 if(searchLine.substring(0, 10).equalsIgnoreCase(inLine.substring(0,10))) {
                     System.out.println("Record Found - " + inLine.substring(0, 10) + " | " + searchLine.substring(0, 10)  );
                     myWriter.write(inLine + System.lineSeparator());
                     inLine = in.readLine();
                 }else {
                     inLine = in.readLine();
                 }

             }

            in.close();
            myWriter.close();
            search.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("Read and Write to File done in - " + (System.currentTimeMillis() - time));
    }

```