Estoy buscando una manera de reemplazar una cadena en un archivo sin leer todo el archivo en la memoria. Normalmente me gustaría utilizar un lector y escritor, es decir, algo así como lo siguiente:Reemplazar cadena en el archivo
public static void replace(String oldstring, String newstring, File in, File out)
throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(in));
PrintWriter writer = new PrintWriter(new FileWriter(out));
String line = null;
while ((line = reader.readLine()) != null)
writer.println(line.replaceAll(oldstring,newstring));
// I'm aware of the potential for resource leaks here. Proper resource
// handling has been omitted in the interest of brevity
reader.close();
writer.close();
}
Sin embargo, quiero hacer la sustitución en el lugar, y no creo que puedo tener un lector y escritor abierta en el mismo archivo al mismo tiempo Además, estoy usando Java 1.4, por lo dont't tiene acceso a NIO, escáner, etc.
Gracias, Don
Solo para tu información, eres consciente de que 'replaceAll' está basado en expresiones regulares, ¿no? Si solo quieres hacer un reemplazo literal de cadena recta (como sugieren los nombres de tus parámetros formales), puedes usar el método 'replace (CharSequence, CharSequence)' en su lugar. – polygenelubricants
¿Qué tal escribir en un archivo temporal y luego reemplazar el original? – InsertNickHere