我目前正在从文本文件中替换一行中的一些字符串。该文件包含以下内容:如何在File Java中保留2个标签空间格式
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个或更多标签空间。
你到底想达到什么目的?不同之处在于会有'space'和'tab'的组合,你没有正确检查。 – mtk
writer1.write(“\ t”+ replaceValue); < - 当我替换字符串时,您只在此写入一个选项卡 – fge
,它应该从原始位置开始,就像它们在原始文件中一样。看到右侧的图片,CDCD应该从System.out.println(“hi”)开始; ABAB和BCBC保持原来的位置。 – Deathstar