不确定我做错了什么。继续得到在最后一行找不到文件的错误。
string XMLPackagesDir = "C:\\Users\\ro\\Desktop\\Cl\\Cle\\Xm\\";
DirectoryInfo DirInfo = new DirectoryInfo(XMLPackagesDir);
foreach (FileInfo fi in DirInfo.GetFiles("*.*", SearchOption.AllDirectories))
{
XmlSerializer serializer = new XmlSerializer(typeof(Response));
Response i;
FileStream fs = null;
fs = new FileStream("XMLPackagesDir" + fi.Name, FileMode.Open);
答案 0 :(得分:3)
您正在使用字符串文字而不是变量。使用
fs = new FileStream(XMLPackagesDir + fi.Name, FileMode.Open);
而不是
fs = new FileStream("XMLPackagesDir" + fi.Name, FileMode.Open);
或更好
fs = new FileStream(Path.Combine(XMLPackagesDir, fi.Name), FileMode.Open);
所以你不必担心斜杠。
答案 1 :(得分:2)
你有一个对象string XMLPackagesDir
。但是你在最后一行使用了一个字符串:
fs = new FileStream("XMLPackagesDir" + fi.Name, FileMode.Open);
使用您的对象,并根据最佳做法,使用Path
库:
fs = new FileStream(Path.Combine(XMLPackagesDir, fi.Name), FileMode.Open);
答案 2 :(得分:0)
其他答案已经解决了你的错字。但我想这么说 FileInfo类有一个名为FullName的属性,顾名思义,它包含文件的全名及其文件夹名称。
那你为什么需要这个字符串连接?
只是
fs = new FileStream(fi.FullName, FileMode.Open);
答案 3 :(得分:0)
尝试
public static void foo(String path) {
try {
DirectoryInfo DirInfo = new DirectoryInfo(path);
foreach (FileInfo fi in DirInfo.GetFiles("*.*", SearchOption.AllDirectories)){
XmlSerializer serializer = new XmlSerializer(typeof(Response));
Response i;
FileStream fs = null;
fs = new FileStream(fi.FullName, FileMode.Open);
}
} catch (Exception ex) {
Log.Error(ex);
}
}