将文件中的行替换为另一个字符串

2023-12-08

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

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,第 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<Integer,String> lineValueMap = new HashMap();
for(int i=0 ;i<num.length ; i++) {
    lineValueMap.put(num[i],values[i]);
}


FileInputStream fs = new FileInputStream("test.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fs));

FileWriter writer1 = new FileWriter("test1.txt");

int count = 1;
String line = br.readLine();
while (line != null) {
    String replaceValue = lineValueMap.get(count);
    if(replaceValue != null) {
        writer1.write(replaceValue);
    } else {
        writer1.write(line);
    }
    writer1.write(System.getProperty("line.separator"));
    line = br.readLine();
    count++;
}
writer1.flush();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文件中的行替换为另一个字符串 的相关文章

随机推荐

  • Ruby 私有 attr_accessor 和意外的 nil

    当我经常使用 Ruby 时 我有一个坏习惯 将所有内容公开而忽略隐私 不幸的是 这种无知又回来困扰着我 这是我的问题的一个简单版本 class Something private attr accessor sneaky public de
  • SharePoint - 发生意外错误

    在 SharePoint 中 当我转到新的 Web 部件页面时 我收到以下信息 Error 发生意外的错误 Web 部件维护页面 如果您有权限 可以使用此页面暂时关闭 Web 部件或删除个人设置 有关详细信息 请联系您的站点管理员 解决 W
  • 是否有一个 Java XML API 可以解析文档而不解析字符实体?

    我有一个程序需要解析包含字符实体的 XML 程序本身不需要解决它们 并且它们的列表很大并且会发生变化 所以如果可以的话 我想避免对这些实体的显式支持 这是一个简单的例子
  • 在 INSERT 语句中使用 ROWLOCK (SQL Server)

    在复制大量数据并将其插入同一个表的插入语句上使用 ROWLOCK 是否明智 Ex INSERT INTO TABLE with rowlock id name SELECT newid name FROM TABLE with nolock
  • C++ 排序和跟踪索引

    使用 C 并希望使用标准库 我想按升序对样本序列进行排序 但我也想记住新样本的原始索引 例如 我有一组样本 向量或矩阵A 5 2 1 4 3 我想将这些排序为B 1 2 3 4 5 但我还想记住这些值的原始索引 这样我就可以获得另一组 C
  • Windows 版本的 wcswidth_l

    我有一些文本要写入 Windows 控制台 我需要知道列的实际宽度 wcswidth l 似乎是拥有它的平台上的最佳选择 尽管mbswidth l 会更好 因为我不想使用 wchar t 但由于某种原因它不存在 但除了其他平台之外 我还需要
  • Reflection Help - 根据另一个对象设置对象的属性

    我需要一些反思的帮助 我将一个对象传递给另一个对象的构造函数 我需要循环遍历参数的属性并基于它设置新对象属性 大多数 但不是全部 params 属性都存在于新对象中 到目前为止 我已经有了基本的框架 public DisabilityPay
  • Git远程服务器Push失败

    从远程服务器克隆 Git 存储库后 我在本地副本上提交了一些更改 我想将这些更改推送回远程服务器 但收到一条错误消息 该消息没有产生任何有用的信息 fatal read error Invalid argument Ps 服务器和本地rep
  • PDO - 获取 COUNT(*) 的结果?

    在新用户注册过程中 我试图查找用户名或用户电子邮件是否已在数据库中 为此 我想查找标识符 电子邮件或用户名 与数据库中的记录匹配的行数 如果我没有搞砸 唯一可能的返回值是 0 或 1 我的函数如下 但我需要帮助才能完成它 function
  • 客户端验证无法使用 validate() 进行工作

    我正在 validate 方法中进行验证 public void validate if continent equals 1 HttpServletRequest request ServletActionContext getReque
  • 以编程方式删除按钮上的事件侦听器

    我有一个注册的按钮onclick事件如图所示
  • MySQL自动递增每个在其他列中输入的不同值? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想在我的 mysql 数据库中创建一个列 该列会自动递增以响应输入到另一列的特定值 例如 下面的数据 当学生使用该网站创建新记录时 他 她将输入班级名称并分配一个数字变量 特定于该班
  • 创建一个返回表的 Oracle 函数

    我正在尝试在包中创建一个返回表的函数 我希望在包中调用该函数一次 但能够多次重复使用其数据 虽然我知道我在 Oracle 中创建了临时表 但我希望保持干燥 到目前为止 这就是我所拥有的 Header CREATE OR REPLACE PA
  • 如何使用 dplyr 或 base R 计算链函数中 T/F 观测值的数量?

    假设我有一个名为 tbl dfpokemons像这样 X Name Type 1 Type 2 Total HP Attack Defense Sp Atk Sp Def Speed Generation Legendary int fct
  • copy 和 mutableCopy 如何应用于 NSArray 和 NSMutableArray?

    有什么区别copy and mutableCopy当用于任一NSArray or an NSMutableArray 这是我的理解 这是对的吗 NSArray NSArray myArray imu NSArray arrayWithObj
  • 如何将元素 id 放入 PHP 变量中

    是否可以获取元素id into a PHP多变的 假设我有许多带有 ID 的元素 span class myElement span span class myElement span 我怎样才能把它变成PHP变量以便提交查询 我想我必须重
  • Automapper ProjectTo 将 ToList 添加到子属性中

    我使用 Entity Framework Core 使用投影将实体类映射到 DTO 但是 投影将 ToList 添加到子集合属性中 这会大大减慢查询速度 公司实体 public class Company public Company Em
  • 如果代理不可用,ActiveMq 不会停止

    停止 Apache ActiveMQ 5 15 6 时出现以下错误 设置createConnector false 因为不需要默认的 JMX 连接 注意 启动ActiveMQ activemq admin bat start 停止Activ
  • 如何在按钮 onclick 被触发后保持警报对话框打开? [复制]

    这个问题在这里已经有答案了 主题有点说明了一切 我正在向用户请求 PIN 码 如果他们输入了 PIN 码 请单击确定肯定按钮 并且 PIN 不正确 我想显示 Toast 但保持对话框打开 目前它会自动关闭 当然 这是需要纠正的非常微不足道的
  • 将文件中的行替换为另一个字符串

    我有一个包含以下内容的文本文件 public class MyC public void MyMethod System out println My method has been accessed System out println