gpt4 book ai didi

c# - File.WriteAllText 正在根据 Git 更改我的文件的开头

转载 作者:太空狗 更新时间:2023-10-29 13:52:37 25 4
gpt4 key购买 nike

我有一个非常简单的 C# 程序,它迭代多个文件并替换所有文件中的字符串。

但是,当我使用 Git 比较这些文件时,它突出显示了我所有文件的更改。

我的 C# 代码是:

string[] files = Directory.GetFiles(path, "*", SearchOption.AllDirectories);

foreach (string file in files)
{
string fileText = File.ReadAllText(fileName, Encoding.UTF8);
string newText = fileText.Replace("hello", "goodbye");
File.WriteAllText(fileName, newText, Encoding.UTF8);
}

就我而言,这看起来不错。但是,当我运行这个程序并在存储库上执行 git status 时,我发现每个文件都有差异。

使用类似 Github Desktop 或 SourceTree 的程序会显示以下变化:

Github 桌面版

Github Desktop Screenshot

资源树

Sourcetree Screenshot

感谢您提供任何提示或想法。他们非常感激。 :)

最佳答案

这个字符是Unicode Byte Order Mark (BOM) 序言,由WriteAllText 方法自动添加。

如果你想写没有 BOM 的文件,你必须创建自定义编码:

Encoding utf8NoBom = new UTF8Encoding(false);

然后将实例作为 WriteAllLines 方法的第三个参数传递:

File.WriteAllText(fileName, fileText, utf8NoBom);

关于c# - File.WriteAllText 正在根据 Git 更改我的文件的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com