目录中找不到文件

时间:2015-10-07 17:59:15

标签: c#

不确定我做错了什么。继续得到在最后一行找不到文件的错误。

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);

4 个答案:

答案 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);
            }
        }