用另一个字符串替换File中的行

我有一个包含以下内容的文本文件:

public class MyC{ public void MyMethod() { System.out.println("My method has been accessed"); System.out.println("hi"); } } 

我有一个数组num [] = {2,3,4}; 其中包含要用此数组中的字符串完全替换的行号

String [] VALUES = new String [] {“AB”,“BC”,“CD”};

即第2行将被替换为AB,第3行将替换为BD,而ine 4将替换为CD。

不在num []数组中的行必须与所做的更改一起写入新文件。

到目前为止我有这个。我尝试了几种循环,但它仍然不起作用。

 public class ReadFileandReplace { /** * @param args */ public static void main(String[] args) { try { int num[] = {3,4,5}; String[] VALUES = new String[] {"AB","BC","CD"}; int l = num.length; FileInputStream fs= new FileInputStream("C:\\Users\\Antish\\Desktop\\Test_File.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fs)); LineNumberReader reader = new LineNumberReader(br); FileWriter writer1 = new FileWriter("C:\\Users\\Antish\\Desktop\\Test_File1.txt"); String line; int count =0; line = br.readLine(); count++; while(line!=null){ System.out.println(count+": "+line); line = br.readLine(); count++; int i=0; if(count==num[i]){ int j=0;; System.out.println(count); String newtext = line.replace(line, VALUES[j]) + System.lineSeparator(); j++; writer1.write(newtext); } i++; writer1.append(line); } writer1.close(); } catch (IOException e) { e.printStackTrace(); } finally { } } } 

预期输出应如下所示:

 public class MyC{ AB BC CD Sys.out.println("hi"); } } 

当我运行代码时,所有行都出现在同一行。

你差不多完成了,我用地图更新了你的代码。 检查一下

 int num[] = {3, 4, 5}; String[] values = new String[]{"AB", "BC", "CD"}; HashMap lineValueMap = new HashMap(); for(int i=0 ;i 

您将每行附加到相同的字符串。 您还应该在每行的末尾添加行分隔符。 (您可以使用System.getProperty("line.separator")强大地执行此操作)

你没有附加结束字符。 writer1.append(线); 将数据附加到行而没有结束字符。 因此,它显示在一行。 您可能需要将其更改为:writer1.append(line).append(“\ n”);

尝试这个

 package src; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.TimeZone; public class MainTest { static int i ; public static void main(String[] arg) { try { int num[] = {3,4,5}; String[] VALUES = new String[] {"AB","BC","CD"}; FileInputStream fs= new FileInputStream("C:\\Test\\ren.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fs)); FileWriter writer1 = new FileWriter("C:\\Test\\ren1.txt"); String line; Integer count =0; line = br.readLine(); count++; while(line!=null){ for(int index =0;index