当前位置: 首页 > 面试题库 >

查找和替换文件中的单词/行

丌官玺
2023-03-14
问题内容

我有一个文件(更具体地说是一个log4j配置文件),我希望能够读取该文件并在代码中挑选出某些行并替换它们。例如,在文件中,有一串文本,指示文件的存储目录或记录器的级别。我希望能够替换这些文本字符串而无需读入文件,将其写入另一个文件以及删除原始文件。有没有一种使用Java来查找和替换文件中文本的更有效方法?

这是我尝试使用的文本文件的示例:

log4j.rootLogger=DEBUG, A0

log4j.appender.A0=org.apache.log4j.RollingFileAppender
log4j.appender.A0.File=C:/log.txt
log4j.appender.A0.MaxFileSize=100KB
log4j.appender.A0.MaxBackupIndex=1

log4j.appender.A0.layout=org.apache.log4j.RollingFileAppender
log4j.appender.A0.layout.ConversionPattern=%-4r [%t] %-5p: %c %x - %m%n

我希望能够读取文件并将’DEBUG’替换为另一个级别,或者替换文件目录名称’C:/log.txt’。日志配置文件也用xml编写。下面是一个示例。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
    <appender class="org.apache.log4j.RollingFileAppender" name="A0">
        <param name="append" value="false"/>
        <param name="File" value="C:/log/.txt"/>
        <param name="MaxBackupIndex" value="1"/>
        <param name="MaxFileSize" value="100KB"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p: %c %x - %m%n"/>
        </layout>
    </appender>
    <root>
        <level value="DEBUG"/>
        <appender-ref ref="A0"/>
    </root>
</log4j:configuration>

我认为对于这种类型的实现可以使用哈希映射吗?


问题答案:

任何体面的文本编辑器都具有支持正则表达式的搜索和替换功能。

但是,如果您有理由重新发明Java轮子,则可以执行以下操作:

Path path = Paths.get("test.txt");
Charset charset = StandardCharsets.UTF_8;

String content = new String(Files.readAllBytes(path), charset);
content = content.replaceAll("foo", "bar");
Files.write(path, content.getBytes(charset));

这仅适用于Java 7或更高版本。如果您坚持使用较旧的Java,则可以执行以下操作:

String content = IOUtils.toString(new FileInputStream(myfile), myencoding);
content = content.replaceAll(myPattern, myReplacement);
IOUtils.write(content, new FileOutputStream(myfile), myencoding);

在这种情况下,您需要添加错误处理并在完成处理后关闭流。

IOUtils在http://commons.apache.org/proper/commons-io/javadocs/api-
release/org/apache/commons/io/IOUtils.html中
有记录



 类似资料:
  • 从word文件中,我想替换字符的交替出现。通过使用查找

  • 问题内容: 如何使用Java在多个文本文件中查找和替换单词? 这是我一次做的方法… 问题答案: 从Commons IO使用:

  • 问题内容: 我有一列包含街道清单的列。我需要将“街道”替换为“圣”。可以使用所需格式的地址在当前列或新列中进行替换。以下是示例数据。“列1”包含当前格式的数据。“第2列”包含所需格式的数据。 我该怎么做呢? 编辑: 此查询适用于以下情况: 是否可以为此列设置规则。这样添加到此的所有数据会自动以这种方式格式化吗?还是我每次都需要重复此查询? 问题答案: 运行这样的查询以在 同一 列中进行更新:

  • 问题内容: 有没有办法替换放置在HTML正文中的table元素内的普通文本? 喜欢用“ hi”代替“ hello”吗? 请仅使用不带 jQuery的* JavaScript 。 * 问题答案: 要用另一个字符串替换HTML中的字符串,请使用innerHTML的replace 请注意,这将替换整个正文的第一个实例,包括HTML代码中的任何实例(例如,类名等。),因此请谨慎使用- 为了获得更好的结果,

  • 我有一条短信。在这篇文章中是一张图片。我想把每个单词柏林都换成一个链接。现在我有问题,这站在图片的旧部分也是柏林,这也被取代。 有没有可能照片中的柏林没有被取代?注意,代码只是一个示例。我通常从wordpress获取内容。但这与此无关。我想。

  • 问题内容: 我正在尝试查找文件中出现的单词数。我有一个文本文件(),文件内容如下: 我期望的结果是: 我使用的代码是: 我得到的结果是: 谁能帮帮我吗?提前致谢 。 问题答案: 使用计数器的方法。例: 输出: