读取文件,搜索术语并替换此术语的所有行
本文关键字:术语 文件 搜索 读取 替换 | 更新日期: 2023-09-27 18:32:12
我做了一些研究,但我找不到问题的答案。
我有这个代码用于搜索一个术语并替换它。
关键是,在我的应用程序中,我想选择一些文件和文件夹路径,然后将该路径写入我的 .properties 文件,以便"值"始终更改。
在我的.properties
文件中,我有db.host=localhost
,我想将其更改为用户选择的主机名,如db.host=myhost
。这是我的代码:
string originalFile = @"C:'wamp'bin'php'php5.4.3'build.properties";
string outputFile = @"C:'wamp'bin'php'php5.4.3'build1.properties";
string searchTerm = "db.host=";
string replaceTerm="db.host=" + tbhost.Text ;
string tempLineValue;
using (FileStream inputStream = File.OpenRead(originalFile))
{
using (StreamReader inputReader = new StreamReader(inputStream))
{
using (StreamWriter outputWriter = File.AppendText(outputFile))
{
while (null != (tempLineValue = inputReader.ReadLine()))
{
outputWriter.WriteLine(tempLineValue.Replace(searchTerm, replaceTerm));
}
}
}
}
所以现在,如果我搜索db.host=
并更改它"db.host=" + tbhost.Text
我文件中的结果db.host=myhostoldhost
假设我的tbhost.Text=myhost
和最旧的值是"oldhost"。所以我需要的是找到db.host=
删除所有行,然后写在那行中。
在
写入文件之前使用以下代码
Regex r = new Regex(@"'s");
String[] tokens = r.Split(tempLineValue);
string settings = string.Empty;
for (int i = 0; i < tokens.Length; i++)
{
if (tokens[i].Contains(searchTerm))
{
settings = tokens[i];
break;
}
}
if (settings != string.Empty)
outputWriter.WriteLine((tempLineValue.Replace(settings, replaceTerm));
else
outputWriter.WriteLine(tempLineValue);
假设:你的主人只有一个词。
usercr 我有这样的代码:
using (FileStream inputStream = File.OpenRead(originalFile))
{
using (StreamReader inputReader = new StreamReader(inputStream))
{
using (StreamWriter outputWriter = File.AppendText(outputFile))
{
while (null != (tempLineValue = inputReader.ReadLine()))
{
Regex r = new Regex(@"'s");
String[] tokens = r.Split(tempLineValue);
string settings = string.Empty;
for (int i = 0; i < tokens.Length; i++)
{
if (tokens[i].Contains(searchTerm))
{
settings = tokens[i];
break;
}
}
outputWriter.WriteLine((tempLineValue.Replace(settings, replaceTerm)));
}
}
}
}
我得到了解释"字符串不能为零长度。参数名称:旧值"