user3718160
user3718160

Reputation: 491

Java add text to a specific line in a file

I would like to know if it's possible to add a line in a File with Java.

For example myFile :

1: line 1
2: line 2
3: line 3
4: line 4

I would like to add a line fox example in the third line so it would look like this

1: line 1
2: line 2
3: new line
4: line 3
5: line 4

I found out how to add text in an empty file or at the end of the file but i don't know how to do it in the middle of the text without erasing the line.

Is the another way than to cut the first file in 2 parts and then create a file add the first part the new line then the second part because that feels a bit extreme ?

Thank you

Upvotes: 7

Views: 16458

Answers (2)

M. Suurland
M. Suurland

Reputation: 735

In Java 7+ you can use the Files and Path class as following:

List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);

To give an example:

Path path = Paths.get("C:\\Users\\foo\\Downloads\\test.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

int position = lines.size() / 2;
String extraLine = "This is an extraline";  

lines.add(position, extraLine);
Files.write(path, lines, StandardCharsets.UTF_8);

Upvotes: 13

Daniel Gutierrez
Daniel Gutierrez

Reputation: 11

You may read your file into an ArrayList, you can add elements in any position and manipulate all elements and its data, then you can write it again into file.

PD: you can not add a line directly to the file, you just can read and write/append data to it, you must manipulte de data in memory and then write it again.

let me know if this is useful for you

Upvotes: 1

Related Questions