如何从.txt获取字符并使用它来替换文件中的其他字符?

问题描述:

我需要更改文件夹中的文件列表中的字符作为输入。对于匹配的字符,我用另一个文件,它为我提供了这样的事情:如何从.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)使用循环应用替换; 3)写出结果。 –

如果我不正确地打开你想要的东西。这个问题在本节:

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

当你执行你的代码只读线0至arrayToConvert.length并且那不是你想要的。

所以更好的方法是阅读每一行并将其转换。

,这可能在某种程度上就像这样:

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. 运行替换逻辑
  3. 将转换后的行写入新文件
+0

我得到了你的代码的NullPointerException,我不明白为什么。 – sublimopopo