在目录中找不到文件

本文关键字:找不到 文件 | 更新日期: 2023-09-27 18:16:26

不知道我做错了什么。

总是在最后一行找不到文件。
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);

在目录中找不到文件

您正在使用字符串字面值而不是变量。使用

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

所以你不用担心后面的斜杠

您有一个对象string XMLPackagesDir。但是您在最后一行使用了字符串:

fs = new FileStream("XMLPackagesDir" + fi.Name, FileMode.Open);

使用您的对象,并且根据最佳实践,使用Path库:

fs = new FileStream(Path.Combine(XMLPackagesDir, fi.Name), FileMode.Open);

其他答案在您的错别字处给出了解决方案。但我想说的是FileInfo类有一个名为FullName的属性,顾名思义,它包含了文件的全名和文件夹名。

那么为什么需要这个字符串连接呢?

就是

 fs = new FileStream(fi.FullName, FileMode.Open);

try with

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