2012-08-25 4 views
1

저는 java의 초보자입니다. 사용자가 파일 경로, 바꿀 문자열 및 바꿀 문자열을 지정하는 문자열 바꾸기 코드가 있습니다. 이 코드는 .txt 또는 .in 파일과 잘 작동합니다. 그러나 내가 코드를 작성하고자하는 .java 파일을 편집하려고하면 그것을 어떻게 든 편집 할 수 없습니다. 아무도 실제로 문제가있는 곳을 제안 할 수 있습니까? 다음과 같이 내 코드는 간다 :java 프로그램을 사용하여 .java 파일을 편집 할 수 없습니다.

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"); 
     } 
    } 
} 
+3

글쎄요 *해야합니까? 나는'Scanner'를 정직하게 사용하지 않을 것입니다.'BufferedReader'를 사용하고 한 번에 한 줄씩 읽으려고합니다. –

+0

바이너리 또는 텍스트 스트림에서 실제로 어떤 문제가 발생하는지 알 수 있습니다. Java 파일에는 유니 코드 문자가 포함될 수 있습니다. –

+0

나를 위해 코드 .java 파일에서 잘 작동합니다. – Vinesh

답변

1

는 의견 상태로서, "된 .java"파일 및 기타 텍스트 파일 사이에 차이점이 없습니다.

편집기 응용 프로그램이 실제로 정규식 검색/바꾸기가 아니라 간단한 문자열 검색/바꾸기로 코딩되었음을 알지 못했다고 생각됩니다. (그게 바로 String.replaceAll(...)입니다 ...) 무의식적으로 regex 메타 문자가 들어있는 "replace to replace"문자열을 제공하면 일치하지 않거나 예상치 못한 곳에서 일치하는 문자열을 찾을 수 있습니다.

관련 문제