1

How can I find and replace a word in several text files, using Java?

Here's how I do it for a single String...

public class ReplaceAll { public static void main(String[] args) { String str = "We want replace replace word from this string"; str = str.replaceAll("replace", "Done"); System.out.println(str); } } 

3 Answers 3

8

Using FileUtils from Commons IO:

String[] files = { "file1.txt", "file2.txt", "file3.txt" }; for (String file : files) { File f = new File(file); String content = FileUtils.readFileToString(new File("filename.txt")); FileUtils.writeStringToFile(f, content.replaceAll("hello", "world")); } 
Sign up to request clarification or add additional context in comments.

5 Comments

Is this code ok? import java.io.File; public class FindNReplace { public static void main(String args[]) { String[] files = { "file1.txt", "file2.txt", "file3.txt" }; for (String file : files) { File f = new File(file); String content = FileUtils.readFileToString(new File("filename.txt")); FileUtils.writeStringToFile(f, content.replaceAll("hello", "world")); } } }
sorry i don't know how to answer
it seems i can't answer to myself coze i'm new here,
OK here is the error code : run: Exception in thread "main" java.lang.UnsupportedOperationException: Not yet implemented at findnreplace.FileUtils.readFileToString(FileUtils.java:17) at findnreplace.FindNReplace.main(FindNReplace.java:13) Java Result: 1 BUILD SUCCESSFUL (total time: 1 second)
Are you using version 2.1. This method is definitely implemented.
2

You can read in the file using a FileReader wrapped by a BufferedReader, pulling it in line by line, perform the same replace on the string that you show in your question, and write it back out to a new file.

3 Comments

Not if you want to replace for instance "\r\n" with "\n".
@aioobe I don't see why that'd be especially problematic. Obviously if you need to replace something that may be longer than one line, it's a bit more complicated, but still better than having to have the whole file in memory at once.
i just want to know what library i have to add to program
1

This is the working code: Hope it helps!

import java.io.*; import java.util.Scanner; import java.util.StringTokenizer; public class TestIO { static StringBuilder sbword = new StringBuilder(); static String dirname = null; static File[] filenames = null; static Scanner sc = new Scanner(System.in); public static void main(String args[]) throws FileNotFoundException, IOException{ boolean fileread = ReadFiles(); sbword = null; System.exit(0); } private static boolean ReadFiles() throws FileNotFoundException, IOException{ System.out.println("Enter the location of folder:"); File file = new File(sc.nextLine()); filenames = file.listFiles(); String line = null; for(File file1 : filenames ){ System.out.println("File name" + file1.toString()); sbword.setLength(0); BufferedReader br = new BufferedReader(new FileReader(file1)); line = br.readLine(); while(line != null){ System.out.println(line); sbword.append(line).append("\r\n"); line = br.readLine(); } ReplaceLines(); WriteToFile(file1.toString()); } return true; } private static void ReplaceLines(){ System.out.println("sbword contains :" + sbword.toString()); System.out.println("Enter the word to replace from each of the files:"); String from = sc.nextLine(); System.out.println("Enter the new word"); String To = sc.nextLine(); //StringBuilder sbword = new StringBuilder(stbuff); ReplaceAll(sbword,from,To); } private static void ReplaceAll(StringBuilder builder, String from, String to){ int index = builder.indexOf(from); while(index != -1){ builder.replace(index, index + from.length(), to); index += to.length(); index = builder.indexOf(from,index); } } private static void WriteToFile(String filename) throws IOException{ try{ File file1 = new File(filename); BufferedWriter bufwriter = new BufferedWriter(new FileWriter(file1)); bufwriter.write(sbword.toString()); bufwriter.close(); }catch(Exception e){ System.out.println("Error occured while attempting to write to file: " + e.getMessage()); } } 

}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.