Проблема с перемещением файла из одного каталога в другой
Привет,
У меня есть программа, которая должна переместить файл из одного директория в другой каталог на примере FTP-сервера (ftp://10.3.4.5.1/ftpfolder/folder\test.txt,ftp://10.3.4.5.1/ftpfolder/backup\test.txt)
//This is the statement the OP really has: //MoveFile("ftp://10.3.4.5.1", "anonymous", "", "/ftpfolder/", "/ftpfolder/backup\\", "test.txt"); //Editor changed to this because the code block formatting doesn't like \\" MoveFile("ftp://10.3.4.5.1", "anonymous", "", "/ftpfolder/", < See Comment Above >, "test.txt"); public static string MoveFile(string ftpuri, string username, string password, string ftpfrompath, string ftptopath, string filename) { string retval = string.Empty; //FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpuri + ftpfrompath + filename); FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://10.14.21.80/ftpfolder/test.txt"); ftp.Method = WebRequestMethods.Ftp.Rename; ftp.Credentials = new NetworkCredential(username, password); ftp.UsePassive = true; //Statment OP really had was this: //ftp.RenameTo = GetRelativePath("/ftpfolder/test.txt", "/Backup\\") + filename; //Editor changed to this because the code block formatting doesn't like \\" ftp.RenameTo = GetRelativePath("/ftpfolder/test.txt", < See Comment Above >) + filename; Stream requestStream = ftp.GetRequestStream(); FtpWebResponse ftpresponse = (FtpWebResponse)ftp.GetResponse(); Stream responseStream = ftpresponse.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); return reader.ReadToEnd(); } public static string GetRelativePath(string ftpBasePath, string ftpToPath) { if (!ftpBasePath.StartsWith("/")) { throw new Exception("Base path is not absolute"); } else { ftpBasePath = ftpBasePath.Substring(1); } if (ftpBasePath.EndsWith("/")) { ftpBasePath = ftpBasePath.Substring(0, ftpBasePath.Length - 1); } if (!ftpToPath.StartsWith("/")) { throw new Exception("Base path is not absolute"); } else { ftpToPath = ftpToPath.Substring(1); } if (ftpToPath.EndsWith("/")) { ftpToPath = ftpToPath.Substring(0, ftpToPath.Length - 1); } string[] arrBasePath = ftpBasePath.Split("/".ToCharArray()); string[] arrToPath = ftpToPath.Split("/".ToCharArray()); int basePathCount = arrBasePath.Count(); int levelChanged = basePathCount; for (int iIndex = 0; iIndex < basePathCount; iIndex++) { if (arrToPath.Count() > iIndex) { if (arrBasePath[iIndex] != arrToPath[iIndex]) { levelChanged = iIndex; break; } } } int HowManyBack = basePathCount - levelChanged; StringBuilder sb = new StringBuilder(); for (int i = 0; i < HowManyBack; i++) { if (i == 0) { sb.Append("ftp://10.3.4.5.1/ftpfolder/"); } } for (int i = levelChanged; i < arrToPath.Count(); i++) { sb.Append(arrToPath[i]); //sb.Append("/"); } return sb.ToString(); }
Ошибки : не удается отправить тело содержимого с этим типом глагола.
Пожалуйста, кто - нибудь помогите мне в этом вопросе. Я изо всех сил пытаюсь написать код на этом isssue. Спасибо.
[Edit - суммированная тема и добавленный блок кода]
[Второе редактирование - закомментировал некоторый код, потому что форматирование кода на CP не обрабатывает \\" совершенно правильно, и Форматирование было сброшено для всего блока кода.]