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