C# StreamReader路径使用*-路径中的非法字符

C# StreamReader路径使用*-路径中的非法字符,c#,streamreader,C#,Streamreader,我需要像这样使用StreamReader StreamReader fichRecheio = new StreamReader(@"G:\C#Projects\folder1\*.tl2",System.Text.Encoding.Default); 但这给了我一个错误: 未处理的异常-路径中的非法字符 如果我输入文件名而不是*可以正常工作。 该目录中只有一个文件。我不知道名称,只知道扩展名。 谢谢当然,*用于多个文件的通配符匹配。指定单个文件名: StreamReader fichRe

我需要像这样使用StreamReader

StreamReader fichRecheio = new StreamReader(@"G:\C#Projects\folder1\*.tl2",System.Text.Encoding.Default);  
但这给了我一个错误: 未处理的异常-路径中的非法字符
如果我输入文件名而不是*可以正常工作。
该目录中只有一个文件。我不知道名称,只知道扩展名。

谢谢

当然,
*
用于多个文件的通配符匹配。指定单个文件名:

StreamReader fichRecheio = new StreamReader(@"G:\C#Projects\folder1\example.tl2",System.Text.Encoding.Default);

因为您试图用一个流打开多个文件,所以这是不可能的

您必须将尝试连接读卡器的确切文件名指定为:

 StreamReader fichRecheio = new StreamReader(@"G:\C#Projects\folder1\test.tl2",System.Text.Encoding.Default);

如果我正确理解了你的问题,为什么不这样做:

请改用Directory.EnumerateFiles()方法

var sourceDirectory = @"G:\C#Projects\folder1\"
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.tl2");

foreach (string currentFile in txtFiles)
{
   StreamReader leFiles = new StreamReader(currentFile, System.Text.Encoding.Default);  
}

如果您试图使用通配符搜索名称中具有特定模式的文件,请使用
System.IO.Directory.GetFiles(“*.tl2”)
,它返回一个可以枚举的路径数组

string[] FilePaths = System.IO.Directory.GetFiles("*.tl2");

foreach (file in FilePaths)
{
//process the file
}

不清楚吗?路径中存在非法字符。您不能在文件/dir name中使用
*
。您必须创建一个循环,使用Directory.GetFiles并指定通配符来获取所需的所有文件,然后使用StreamReader逐个处理。如果您只知道文件的扩展名,请使用
Directory.GetFiles(@“G:\C\Projects\folder1\,“*.t12”,SearchOption.TopDirectoryOnly)
获取匹配文件名的
字符串[]
数组。但我需要这样使用。。。我需要StreamReader来读取具有该扩展名的文件,我不知道文件名。因此您需要使用
Directory.GetFiles()
并提供
*.t12
作为搜索模式
StreamReader
只能处理单个指定文件。但该目录中只有一个文件可读取。不是多个文件如果您不知道文件名(只是扩展名),那么我认为没有更好的解决方案。