German Varanytsya
German Varanytsya

Reputation: 397

how to put txt file to specific line of the second txt file

I have 2 files, one is new.txt and second is template.txt i need to put new.txt to the 6 line of template.txt and don't understand how to do that. let's show you what i already have!

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        File dir = new File(".");

        String source = dir.getCanonicalPath() + File.separator + "new.txt";
        String dest = dir.getCanonicalPath() + File.separator + "template.txt";

        File fin = new File(source);
        FileInputStream fis = new FileInputStream(fin);
        BufferedReader in = new BufferedReader(new InputStreamReader(fis));

        FileWriter fstream = new FileWriter(dest,true);
        BufferedWriter out = new BufferedWriter(fstream);

        String aLine = null;
        while((aLine = in.readLine()) != null){
            out.write(aLine);
            out.newLine();
        }
        in.close();
        out.close();
    }
}

Upvotes: 2

Views: 78

Answers (2)

noname
noname

Reputation: 565

Pseudo code to comment above:

File fileOne = new File("new.txt");
File fileTwo = new File("template.txt");

List<String> listOne = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>();

String s = "";

while((s = fileOne.readLine()) != null){
  listOne.add(s);
}

for(int i = 0; i < listOne.size(); i++){
  if(i == 5){
    String s2 = "";
    while((s2 = fileTwo.readLine()) != null){
      listTwo.add(s);
    }
  }
  listTwo.add(listOne.get(i));
}

Like I said this is only pseudo code, so may not work, but that will be good exercise for you to make it work. I hope you understand the idea behind it.

PS. of course after you do that, you have to write all data from listTwo to file which you want.

Upvotes: 0

Malt
Malt

Reputation: 30305

Files don't have an "insert" operation. You can't simply write something to the middle of the file. Writes happen at a given offset, and they override whatever is already there.

So you need to create a temp file, copy lines 1-5 of new.txt into it. Then write line 6 from the template, followed by the rest of new.txt. Once you're done, delete new.txt and rename the temp file to new.txt.

If the files a are guaranteed to be small, you can replace the temp file with an in-memory buffer.

Upvotes: 4

Related Questions