No se puede editar un archivo .java con un programa java
Frecuentes
Visto 1,100 veces
1
Soy un principiante en java. Tengo un código de reemplazo de cadena en el que el usuario especifica la ruta del archivo, la cadena para reemplazar y la cadena con la que reemplazar. El código funciona bien con archivos .txt o .in. Pero cuando trato de editar un archivo .java para el cual tenía la intención de escribir el código, de alguna manera no puede editarlo. ¿Alguien puede sugerir dónde está realmente el problema? Mi código es el siguiente:
import java.io.*;
import java.util.*;
public class StringReplace{
public static void main(String[] args) throws IOException
{
System.out.println("Enter path of file:");
Scanner sc=new Scanner(System.in);
String path=sc.nextLine();
File f=new File(path);
if (f.canRead())
{
System.out.print("Now enter the string to replace:_");
String oldString=sc.nextLine();
System.out.print("Now enter the string to replace with:_");
String newString=sc.nextLine();
StringBuffer sb=new StringBuffer();
sc=new Scanner(f);
sc.useDelimiter("");
while(sc.hasNext())
{
sb.append(sc.next());
}
sc.close();
FileWriter fw=new FileWriter(path);
PrintWriter pw=new PrintWriter(fw,true);
System.out.println(sb);
pw.println(sb.toString().replaceAll(oldString, newString));
fw.close();
pw.close();
System.out.print("DONE!");
}
else
System.out.println("File Does Not Exist");
}
}
}
1 Respuestas
1
Como dicen los comentarios, no debería haber diferencia entre un archivo ".java" y cualquier otro archivo de texto.
Sospecho que el problema es que no se ha dado cuenta de que su aplicación de edición está codificada para hacer una expresión regular buscar/reemplazar, no una simple búsqueda/reemplazo de cadenas. (Eso es lo que String.replaceAll(...)
hace ...) Si, sin saberlo, proporciona una "cadena para reemplazar" que contiene metacaracteres de expresiones regulares, es posible que no coincida o que coincida en un lugar que no esperaba.
Respondido 26 ago 12, 03:08
Bien que do ¿es lo que hace? yo no usaría
Scanner
para esto, para ser honesto, usaríaBufferedReader
y solo leía una línea a la vez, probablemente escribiendo sobre la marcha. - Jon SkeetQuién sabe qué problema real es trabajar con flujo binario o de texto. El archivo Java puede contener caracteres Unicode. - Roman C
Para mí, el código también funciona bien en el archivo .java. - Vinesh
@Jon Skeet: estoy usando el escáner aquí con una cadena en blanco como delimitador, ya que necesito conservar todos los delimitadores predeterminados del escáner y el lector almacenado en búfer en el archivo editado. Solo se cambiarán "oldString". - Victor Mukherjee
¿Cuál es el error que obtienes exactamente? - Y__