c# - 如何使用 StreamReader 处理文件目录中的所有 CSV 文件?
问题描述
我有一个需要处理 CSV 文件的 C# 程序。当我只指定一个文件时,我的程序工作正常,但我试图将其更改为处理指定文件目录中的所有 CSV 文件,但它不再正常工作。它拾取文件但不读取它们。这是我尝试使用的基本结构:
string[] filePaths = Directory.GetFiles(@"C:\Users\XXXXX\Documents\", "*.csv");
foreach (var file in filePaths)
{
StreamReader streamReader = new StreamReader(file);
try
{
while (!streamReader.EndOfStream)
{
string[] totalData = new string[System.IO.File.ReadAllLines(file).Length];
}
}
}
解决方案
您的 while 循环将永远运行,因为您根本没有推进 StreamReader 实例。您实际上并没有使用 StreamReader 来做任何事情。
如果您只想一口气阅读所有文本,则可以使用 File.ReadAllLines 而不是使用 StreamReader。
如果您想一次读取一行文件,请使用 StreamReader。
此外,如果您确实使用了 StreamReader,则应将其与“使用”结合使用,以确保在您完成后将其处理掉。
推荐阅读
- java - 迁移到 Java 11 时出现 Logback 错误
- spring-boot - 从返回 Flux 的 WebClient 捕获 PrematureCloseException
- javascript - d3.js 错误:
属性 d:预期数字,“MNaN,360LNaN,43.9…” - python - 如何读取名称如 (1,1) 的 .hdf5 文件?
- flutter - 带有对齐对齐的 Flutter Wrap 小部件
- python - Kivy GridLayout scaling issues - Android vs PC - 16:9 and 19:5:9 vs 4:3(1920x1080 and 1440x3120 vs 800x600)
- python-3.x - 子矩阵右对角线 - Python
- firebase - 使用云功能部署到 Firebase 托管后,滚动插件上的动画在 Nuxt 版本 2 中不起作用
- java - RSelenium:为什么我不能向这个(Java?)登录字段发送密码?
- java - cucumber.runtime.CucumberException:没有找到后端。请确保您的 CLASSPATH 上有一个后端模块