C#.使用文件夹中的所有文件,并在特定行中写入不同的字符串
本文关键字:字符串 文件夹 文件 | 更新日期: 2023-09-27 18:30:55
我需要你的帮助。
问题是我的代码有效,它读取文件夹中的所有文件,即 96 个文本文件并保存每个文件的路径。然后,我获取每个文件并更改文本文件中的行号32,即"治疗";"1'";nr = 1,2,3,4,5,...,96。我的程序将采用此字符串并将其替换为其他字符串,例如,我将第一个文件更改为"Treatment";"100'";那么最后一个文件应该是"治疗";"196";
因此,为了解决这个问题,我用一条新线更改了整条线。但是当我将数字写入字符串时,第一个文件是正确的,当我从 1 开始时,但文件 2-10 是正确的。12,23,34,45,56,67,78,89,然后从第 11 个文件开始 2,3,4,5,6,7。
这是为什么呢?我的代码如下。
我尝试将整数保存为字符串,因为我虽然以某种方式访问了 ASCII 表。但这是一样的,所以我的代码低于任何想法?
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
int start = 1;
string strengur = "'";";
string myString = start.ToString();
string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
//foreach (var file in Directory.EnumerateFiles(folderBrowserDialog1.SelectedPath))
for(int i = 0; i < 96 ; i++){
var lines = File.ReadAllLines(filePaths[i]);
lines[31] = "'"Treatment!!'";'"" +myString +strengur;
File.WriteAllLines(filePaths[i], lines);
start += 1;
myString = start.ToString();
}
}
}
此致敬意Sæþór ólafur pétursson
在Windows资源管理器中显示所有这些文件,按名称排序,然后您将看到原因。
要解决这个问题,您可以根据每个文件的line31
的当前编号设置start
,并按100
添加。 例如:
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
string strengur = "'";";
string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
foreach(var file in filePaths)
{
var lines = File.ReadAllLines(file);
int currentstart = int.Parse(lines[31].Split(';')[1].Trim(''"'));
lines[31] = "'"Treatment!!'";'"" + (currentstart+100).ToString() + strengur;
File.WriteAllLines(file, lines);
}
}
}
根据您的评论进行编辑:
private void button1_Click(object sender, EventArgs e)
{
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
int start = 100; //set this to your user's input
string strengur = "'";";
string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
foreach(var file in filePaths)
{
var lines = File.ReadAllLines(file);
int currentstart = int.Parse(lines[31].Split(';')[1].Trim(''"'));
lines[31] = "'"Treatment!!'";'"" + (currentstart+start-1).ToString() + strengur;
File.WriteAllLines(file, lines);
}
}
}