원격 컴퓨터에서 파일을 삭제합니다
-
04-07-2019 - |
문제
원격 컴퓨터에서 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 (디렉토리)를 사용하여 디렉토리를 전혀 볼 수 있는지 확인해야합니다.