我需要更改我输入的文件夹中的文件列表中的字符。对于匹配的字符,我使用另一个文件,它提供了这样的东西:
我使用substring将这些字符中的每一个存储在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 :(得分:0)
如果我正确地说出你想要的东西。问题在本节中:
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);
}
或以非代码方式解释: