2

XMLファイルを含むディレクトリをリモートコンピュータから削除しようとしています。私のコードはコンパイルされて正常に実行されますが、指定したパスでXMLファイルのリストを取得しようとすると、何も返されません。私は賢明な何か許可を逃していますか?

自分自身としてログオンしているコンピューターと、別のユーザーとしてログオンしている別のコンピューターから実行しました。どちらのアカウントも、XMLファイルを含むディレクトリを完全に制御できます。

.NET2.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 は渡す拡張子です。これは単に '.xml' だと思います。Get files は「.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

引数として何を渡しますか? マップされたドライブまたは直接参照 (つまり、//server/folder) を使用していますか?

ValidateDirectory の代わりに、 Directory.Exists(directory) を使用して、ディレクトリがまったく表示されるかどうかを確認する必要があります。

于 2008-10-23T20:15:30.207 に答える