问题描述
我有一个C#程序,需要处理CSV文件。当我仅指定一个文件时,我的程序运行良好,但是我尝试将其更改为处理指定文件目录中的所有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,则应将其与“ using”结合使用,以确保完成后将其丢弃。