读取文件时忽略指定行的技术实现咨询(附现有代码)
解决忽略特定行读取文档的问题
嘿,我来帮你搞定这个需求!首先得先修正下你代码里的路径问题——Path.GetDirectoryName("TextFile.config") + fileName这种写法容易出bug,比如文件在当前目录时,GetDirectoryName会返回空值,拼接后路径就乱了。换成Path.Combine才是稳妥的做法,它会自动处理不同系统的路径分隔符。
回到核心需求:忽略第50行读取其余内容。用File.ReadAllText拿到的是整段文本串,处理行级操作不太方便,换成File.ReadAllLines直接获取行数组会更简单,这样咱们能轻松过滤掉指定行。
注意:日常说的行号是从1开始计数的,但数组索引是从0开始的,所以第50行对应的数组索引是49,这点可别搞混哦。
下面是修改后的完整代码:
string fileName = "TextFile.config"; // 用Path.Combine正确拼接路径,这里默认文件在当前程序运行目录 string filePath = Path.Combine(Environment.CurrentDirectory, fileName); // 读取所有行到数组 string[] allLines = File.ReadAllLines(filePath); // 过滤掉第50行(索引49),再合并成带换行的字符串 string filteredText = string.Join(Environment.NewLine, allLines.Where((line, index) => index != 49));
如果你的文件用的是特定换行符(比如仅\n而非系统默认换行),可以把Environment.NewLine换成对应的换行符,比如"\n"。
要是你坚持想用File.ReadAllText的话,也可以先把文本按行分割处理再合并:
string fileName = "TextFile.config"; string filePath = Path.Combine(Environment.CurrentDirectory, fileName); string text = File.ReadAllText(filePath); // 兼容多种换行符分割成数组 string[] allLines = text.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); string filteredText = string.Join(Environment.NewLine, allLines.Where((line, index) => index != 49));
不过第一种用File.ReadAllLines的方式更直接高效,更推荐用这个方案~
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

