我目前正在从文本文件中替换一行中的一些字符串。该文件具有以下内容:
public class MyC{
public void MyMethod() {
System.out.println("My method has been accessed");
System.out.println("hi");
}
}
我的代码如下:程序只是替换数组中定义的特定行中的字符串。我必须保持原来的缩进。
public class ReadFileandReplace {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
boolean l1;
int num[] = {1, 2, 3};
String[] values = new String[]{"AB", "BC", "CD"};
HashMap<Integer,String> lineValueMap = new HashMap();
for(int i=0 ;i<num.length ; i++) {
lineValueMap.put(num[i],values[i]);
}
FileInputStream fs = new FileInputStream("C:\\Users\\Antish\\Desktop\\Test_File.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
FileWriter writer1 = new FileWriter("C:\\Users\\Antish\\Desktop\\Test_File1.txt");
int count = 1;
String line = br.readLine();
while (line != null) {
l1 = line.contains("\t");
System.out.println(l1);
String replaceValue = lineValueMap.get(count);
if(replaceValue != null) {
if(l1==true){
writer1.write("\t"+replaceValue);}
writer1.write(replaceValue);
} else {
writer1.write(line);
}
writer1.write(System.getProperty("line.separator"));
line = br.readLine();
count++;
}
writer1.flush();
}
}
我得到这个输出:
CDCD 的缩进已经丢失,它应该从它在原始文本文件中的原始位置开始。
有人可以指导我如何解决这个问题。1 代码中的 Tabspace 检查工作正常,但如何检查 2 个或更多制表位。