【问题标题】:how to replace or remove or update line(s) in file using jave FIle i/o如何使用 java FIle i/o 替换、删除或更新文件中的行
【发布时间】:2013-05-27 09:01:08
【问题描述】:

以下是我的java类文件:

Public class subscriberAction {
private Service1 s1 = ServiceFactory.getServiceImpl1();
private Service2 s2 = ServiceFactory.getServiceImpl2();
----
----
----

public Service1 getServiceImpl1Obj(){
    -----
    ----
    return s1.getInstance();
}

public Service2 getServiceImpl2Obj(){
    -----
    ----
    return s2.getInstance();
}

}//课程结束

我想删除私有类变量并通过动态使用java代码修改return语句如下代码。如果我运行编程的 java 文件,SubscriberAction java 文件应该像这样修改。

Public class SubscriberAction {

public Service1 getServiceImpl1Obj(){
    -----
    ----
    return ServiceFactory.getServiceImpl1().getInstance();
}

public Service2 getServiceImpl2Obj(){
    -----
    ----
    return ServiceFactory.getServiceImpl2().getInstance();
}

}

你能帮我写一下java代码吗?

【问题讨论】:

  • 那么你坚持哪一点?最简单的方法可能是将整个文件读入List<String>,修改列表,然后再次写出。哪些任务有问题?

标签: java file file-io collections java-io


【解决方案1】:

您不能直接对您的文件执行此操作。以下是实现它的方法:

  1. 逐行读取原始文件
  2. 如果该行不需要修改,请将其复制到备份/临时文件中
  3. 如果需要更改行,请将更新后的行写入备份/临时文件。如果不需要行,请不要将其写入备份/临时文件。
  4. 读取原始文件并写入备份/临时文件完成后,删除原始文件
  5. 将备份/临时文件重命名为原始文件

希望你也能写出同样的代码!

【讨论】:

    【解决方案2】:

    我会说使用 ArrayList 并执行类似于 Juned Ahsan 所说的操作,但不需要第二个文件。

    1. 逐行读取原始文件
    2. 如果该行不更改,则将其放在 ArrayList 中
    3. 更改/替换/删除
      • 如果必须更改/替换该行,则更改/替换它并将其放置在 ArrayList 中
      • 如果您必须删除该行...什么也不做
    4. 读完后,写入原始文件,覆盖其中已有的内容。

    使用这种方法,您可以避免使用和重命名另一个文件,它仍然可以执行您的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 2019-10-30
      • 2021-02-15
      相关资源
      最近更新 更多