Search code examples
javabufferedreaderbufferedwriter

How to read and write a file in java using buffered reader and bufferedwriter


I need to read a file and write into a separate file. I must also be able to read two files and write them into a single file.

File 1(To be read)
Header
text 
text
Footer

File 2(To be read)
Header
Text12
Text12
Footer

Output file

Header
text
text
Text12
Text12
Footer

the first line and last line remains same but only the middle lines are appended. According to my code. The header and footer is appended twice.

My output :
Header
text 
text
Footer
Header
Text12
Text12
Footer



My Code :

for (int i = 0; i < template.length; i++) {


        String endTime = findEndTime(startTime, duration);

        File file = new File(foldername);
        file.createNewFile();
        BufferedWriter bw = new BufferedWriter(new FileWriter(
                foldername + "/" + solfilename, true));
        BufferedWriter bsftp = new BufferedWriter(new FileWriter(
                "c:/ToolSOlFile/" + solfilename, true));


        try {
            String verify, putData = null,header=null,footer=null;

            FileReader fr = new FileReader("C:/ToolSOlFile/Templates/"+ template[i]);
            BufferedReader br = new BufferedReader(fr);

            while ((verify = br.readLine()) != null) { 


                    putData = verify.replace("YYYYMMDD", yyyymmdd);

                    putData = putData.replace("DD", duration);


                    putData = putData.replace("IIIIIIIIIIIIIII", imsi);


                    putData = putData.replace("HHMMSS", startTime);

                    putData = putData.replace("hhmmss", endTime);

                    putData = putData.replace("XXXXXXXXX", msisdn);

                    putData = putData.replace("BBBBBBBBBBBBBB",
                            processor.returnTemplateName(template[i]));


                    bw.append(putData + "\n");
                    bsftp.append(putData + "\n");

                }


            }

            bw.flush();
            bw.close();

            bsftp.flush();
            bsftp.close();
            br.close();

            startTime = findUpdatedStartTime(startTime);

        } catch (IOException e) {
        e.printStackTrace();
        }

    }

Solution

  • Try the code given below it should help you to identify header footer and middle lines, then u can play around and write them into a file as u wish

    try {

                    reader = new BufferedReader(fr);
                    String next, line = reader.readLine();
                    for (boolean first = true, last = (line == null); !last; first = false, line = next) {
                        last = ((next = reader.readLine()) == null);
    
    
                        if (first) {
    
                            header=line;
                            System.out.println("First Line : "+header);
    
    
                        } else if (last) {
    
                            footer=line;
                            System.out.println("Middle Line : "+footer);
    
    
    
                        } else {
    
                            middle=line;
                            System.out.println("Footer Line : "+middle);
    
    
    
                        }
    
                        //WriteBUlkFileWithDifferenttemplates(header,middle,footer);
    
                    }System.out.println("\n \n");
                } finally {
                    if (reader != null) try { reader.close(); } catch (IOException logOrIgnore) {}
                }
    
    
    
    
    
            }