문제

원격 컴퓨터에서 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());
            }
        }
    }
도움이 되었습니까?

해결책

간단히 .xml 대신 *.xml을 사용해야한다고 생각합니다. 그러나 나는 또한 Kyralessa와 동의하고 먼저 로컬 기계를 테스트 한 다음 네트워크를 가로 질러 복잡하게 추가합니다.

다른 팁

DeleteFiles에는 다음 줄이 있습니다.

fi = di.getfiles (ext);

Ext가 당신이 통과하는 확장자 인 곳은 '.xml'이라고 생각합니다. GET 파일은 '.xml'이라는 파일을 찾고 있습니다. getfiles는 와일드 카드를 가져옵니다. 앞쪽에 별표 (*)를 넣고 시도해보십시오.

-브렛

후속 조치 :

나는 *.xml을 사용해야했다 (그것을 알고 있어야한다!) 이제 작동합니다.

이 사이트는 훌륭합니다!

네트워크 경로를 통과한다고 가정합니까? 로컬 경로에서 프로그램을 실행할 때 실패합니까? 이 선을 수행합니다 : fi = di.getfiles (ext); FileInfo 객체를 반환 하시겠습니까?

당신은 아마도 약간의 디버깅으로 고칠 수있는 작은 잘못이있을 것입니다.

논쟁으로 무엇을 전달하고 있습니까? 매핑 된 드라이브 또는 직접 참조 (예 : // 서버/폴더)를 사용하고 있습니까?

ValidatedIrectory 대신 Directory.Exists (디렉토리)를 사용하여 디렉토리를 전혀 볼 수 있는지 확인해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top