2017-09-27 3 views
0

입력 한 폴더 안에있는 파일 목록의 문자를 변경해야합니다..txt에서 문자를 가져 와서 파일의 다른 문자를 바꾸려면 어떻게 사용합니까?

/A # = A

/A # = A

: 일치하는 문자의 경우, 내가 나에게 같은 것을 제공하는 다른 파일 사용 A #을 = A

나는 각을 저장하는 하위 문자열 사용하십시오 이 배열은 2 개의 배열 안에, 1 개의 배열은 대체 할 문자를, 다른 하나는 치환 문자로 배열합니다.

public static void renameFile(File fileOriginal, String[] arrayToConvert, String[] arrayConverted) throws IOException { 
     File destination = new File(fileOriginal + "");   

     try {    File tempFile = File.createTempFile("buffer", ".tmp");   FileWriter fw = new FileWriter(tempFile); 
      Reader fr = new FileReader(fileOriginal); 
      BufferedReader br = new BufferedReader(fr); 

     while (br.ready()) { 
      for(int i = 0; i < arrayToConvert.length ; i++){   
     fw.write(br.readLine().replace(arrayToConvert[i], arrayConverted[i]));      

      }   } 

을하지만 그것은 작동하지 않습니다, 내가 사용하기 전에 : 그럼 난 이렇게

while (br.ready()) { 
      fw.write(br.readLine().replace("#/A#" , "Á"). 
        replace("#/a#" , "á"). 
        replace("#:A#" , "Ä"). 
        replace("#:a#" , "ä") 

을 그리고 그것은 작동하지만 지금은 파일 내 문자를 받고 오전, 어떻게해야합니까 가장 효율적인 방법으로 그것을 할 수 있습니까? Java 1.6 사용하고 있습니다.

감사합니다.

+0

사용할 수있는 입력 줄이 있으면 다음 단계를 반복하십시오. 1) 다음 줄을 읽습니다. 2) 루프를 사용하여 대체물 1을 적용합니다. 3) 결과를 써라. –

답변

0

내가 원하는 것을 정확하게 이해할 수 없다면.

for(int i = 0; i < arrayToConvert.length ; i++){   
    fw.write(br.readLine().replace(arrayToConvert[i], arrayConverted[i]));      
}   

코드를 실행

당신이 arrayToConvert.length 만 라인 0 읽고 당신이 원하는 것을하지 이잖아 : 문제는이 절에 있습니다.

그래서 더 좋은 방법은 모든 행을 읽고 변환하는 것입니다.

이 같은 방법으로 수행 할 수 있습니다 :

String s = null; 
while((s = br.readLine()) != null){ 
    for(int i = 0; i < arrayToConvert.length ; i++){   
    s = s.replace(arrayToConvert[i], arrayConverted[i]);      
    } 
    fw.write(s);  
} 

아니면 코드가 아닌 방식으로 설명하기 :

  1. 만큼
  2. 실행 라인이 있기 때문에 라인을 읽기 당신의 replac 논리
  3. 변환 된 행을 새 파일에 씁니다.
+0

코드가있는 NullPointerException이 있는데 그 이유를 알 수 없습니다. – sublimopopo