首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# File.ReadAllLines不读取空行

c# File.ReadAllLines不读取空行
EN

Stack Overflow用户
提问于 2022-02-18 12:19:50
回答 1查看 354关注 0票数 0

我使用c#读取一些txt文档,并写入/删除其中的一些行--我必须读取文本文档,删除其中的一些行,然后再将其保存在相同的路径中。直到我意识到它不会读空行,或者在新行中只有一个空格时,它才能正常工作。

以下是我的文本文件结构:

代码语言:javascript
复制
-Name
-LastName
-Age
-Phone
-Address
-Address2(optional) -// this line will be deleted
-Address3(optional) -// this line will be deleted
****here comes the empty line****

这是我的密码:

代码语言:javascript
复制
        List<string> myLines = File.ReadAllLines(path).ToList();
        
        if (myLines.Count > 5)
        {
            for(int i = 7; i >= 5; i--)
            {
                myLines.RemoveAt(i);
            }
            File.WriteAllLines(path, myLines.ToArray());
        }

所以我不知道为什么当我运行File.ReadAllLines时会给我7行(忽略空白的一行),当然,在我删除文件中的某些内容之后,空行仍然存在。

注意:我正在处理超过100 k的文件,不管是哪种方式,我都会手动删除特定的行。

你能帮我整理一下并删除空白行吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-18 12:45:02

下面是一些代码:

代码语言:javascript
复制
    var f = @"-Name
-LastName
-Age
-Phone
-Address
-Address2(optional) -// this line will be deleted
-Address3(optional) -// this line will be deleted

-Name2";

    File.WriteAllText(@"C:\temp\a.txt", f);

    var f2 = File.ReadAllLines(@"C:\temp\a.txt").ToList();

    f2.RemoveAt(7);
    f2.RemoveAt(6);
    f2.RemoveAt(5);

    File.WriteAllLines(@"C:\temp\b.txt", f2);

在c:\temp中打开两个结果文件a.txt和b.txt (确保您有一个c:\temp) -a有空行,b没有临时空行或地址2/3

..but确实注意到b在末尾有一个空行,因为File.WriteAllLines将用一个CRLF结束最后一行(在我的例子中是Name2)。

如果这就是你正在谈论的/你不想要的,那么不妨考虑一下其他的东西,也许:

代码语言:javascript
复制
File.WriteAllText(@"C:\temp\b.txt", string.Join(Environment.NewLine, f2));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71173390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档