2

我正在尝试从远程计算机中删除包含 XML 文件的目录。我的代码编译并运行良好,但是当我在我指定的路径中获取 XML 文件列表时,它没有返回任何内容。我错过了什么许可吗?

我已经从以我自己身份登录的计算机和以其他用户身份登录的另一台计算机运行它。两个帐户都可以完全控制包含 XML 文件的目录。

我正在使用.NET 2.0。

   static void Main(string[] args) {
        string directory, ext = ".xml"; // have tried xml and .xml

        if (args.Length != 1) {
             // do absolutely nothing if we do not exactly 1 argument
        } else {
            Console.WriteLine("Argument accepted.");
            directory = args[0];

            // make sure the directory passed is valid
            if (ValidateDirectory(directory)) {
                Console.WriteLine("Directory is valid.");
                DeleteFiles(directory, ext);
            }
        }
        Console.WriteLine("Done.");
    }

    static bool ValidateDirectory(string d) {
        return Regex.IsMatch(d, @""); // I removed my regex - it validates properly
    }

    static void DeleteFiles(string d, string ext) {
        DirectoryInfo di;
        FileInfo[] fi;

        di = new DirectoryInfo(d);
        fi = di.GetFiles(ext);

        Console.WriteLine("Number of files = " + fi.Length + ".");
        foreach (FileInfo f in fi) {
            try {
                Console.WriteLine(f.FullName);
                f.Delete();
            } catch (Exception ex) {
                // do nothing when there is an exception
                // just do not want it to quit
                Console.WriteLine(ex.ToString());
            }
        }
    }
4

5 回答 5

4

我认为您应该使用 *.xml 而不是简单的 .xml。但我也同意 Kyralessa,首先在您的本地机器上进行测试,然后增加通过网络的复杂性。

于 2008-10-23T20:10:30.017 回答
2

在 DeleteFiles 中,您有以下行:

fi = di.GetFiles(ext);

其中 ext 是您传入的扩展名,我相信它只是“.xml”。获取文件正在寻找任何名为“.xml”的文件。GetFiles 需要通配符,我相信这是您打算做的。在前面放一个星号 (*) 并尝试一下。

-布雷特

于 2008-10-23T20:10:49.547 回答
1

跟进:

我需要使用 *.xml (应该知道!)现在它可以工作了。

这个网站很棒!

于 2008-10-23T20:18:24.400 回答
0

我假设您正在传递网络路径?当您在本地路径上运行程序时它会失败吗?此行是否:fi = di.GetFiles(ext); 返回任何 fileInfo 对象?

您可能只是有一些小错误,可以通过一些调试来修复。

于 2008-10-23T20:09:46.570 回答
0

你传递什么作为论点?您使用的是映射驱动器还是直接引用(即//服务器/文件夹)?

而不是您的 ValidateDirectory,您应该使用 Directory.Exists(directory) 只是为了查看它是否可以看到该目录。

于 2008-10-23T20:15:30.207 回答