C#读取目录中的文件

C#读取目录中的文件,c#,C#,我有一个应用程序,可以读取一个名为“words.CSV”的CSV文件。我的新要求是1)在读取之前,需要确保目录中只有一个CSV文件。2) 它应该读取扩展名为“.CSV”的任何文件,而不仅仅是“words.CSV”(在满足条件1之后)。希望这有意义? 有人能帮忙吗 public class VM { public VM() { Words = LoadWords(fileList[0]); } public IEnumerable<strin

我有一个应用程序,可以读取一个名为“words.CSV”的CSV文件。我的新要求是1)在读取之前,需要确保目录中只有一个CSV文件。2) 它应该读取扩展名为“.CSV”的任何文件,而不仅仅是“words.CSV”(在满足条件1之后)。希望这有意义? 有人能帮忙吗

public class VM
{
    public VM()
    {
        Words = LoadWords(fileList[0]);
    }

    public IEnumerable<string> Words { get; private set; }

    string[] fileList = Directory.GetFiles(@"Z:\My Documents\", "*.csv");


    private static IEnumerable<string> LoadWords(String fileList)
    {

        List<String> words = new List<String>();

        if (fileList.Length == 1)
        {

            try
            {
                foreach (String line in File.ReadAllLines(fileList))
                {
                    string[] rows = line.Split(',');

                    words.AddRange(rows);
                }

            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
            }

            return words;
        }
    }
}
公共类虚拟机
{
公共虚拟机()
{
Words=LoadWords(文件列表[0]);
}
公共IEnumerable单词{get;private set;}
string[]fileList=Directory.GetFiles(@“Z:\My Documents\”,“*.csv”);
私有静态IEnumerable加载字(字符串文件列表)
{
列表单词=新列表();
如果(fileList.Length==1)
{
尝试
{
foreach(文件中的字符串行.ReadAllLines(文件列表))
{
string[]rows=line.Split(',');
words.AddRange(行);
}
}
捕获(例外e)
{
System.Windows.MessageBox.Show(e.Message);
}
返回单词;
}
}
}

您可以使用此代码获取文件夹中所有csv文件的列表:

string[] fileList = Directory.GetFiles( @"Z:\My Documents\", "*.csv");
因此,为了满足您的条件,这应该做到:

string[] fileList = Directory.GetFiles( @"Z:\My Documents\", "*.csv");
if( fileList.Length == 1 )
{
  //perform your logic here
}


Linq的SingleOrDefault运算符将确保存在具有给定模式的唯一文件,否则它将返回null

您基本上可以使用相同的代码。用你的代码替换我上面的评论,而不是
filePath
,你必须使用
fileList[0]
来获取文件的路径。谢谢,我在将字符串转换为字符串[]时遇到了很多错误,你看到了同样的情况吗?在哪一行你会看到这个错误?请把你代码中的那一行贴在这里。我已经编辑了上面的代码,向你展示了我所拥有的,你能帮我吗?谢谢这里的问题是:私有静态IEnumerable加载字(字符串文件列表)
DirectoryInfo di = new DirectoryInfo(@"Z:\My Documents");

// Get a reference to each file in that directory. 
FileInfo[] fiArr = di.GetFiles();

if(fiArr.Length ==1)
{
FileInfo fri = fiArr[0];
    //use fri.Extension to check for csv
    //process as required
}
FileInfo file = new DirectoryInfo(@"Z:\My Documents")
                            .EnumerateFiles("*.csv")
                            .SingleOrDefault();

if (file != null)
{
   //do your logic
}