Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghuraikan Jawapan FTP ListDirectoryDetails Diformat Berubah-ubah dalam C#?
Menghuraikan FTP WebRequestMethods.Ftp.ListDirectoryDetails Response dengan C#
Pelayan FTP menggunakan format respons yang pelbagai semasa melaksanakan kaedah WebRequestorythods.Detailist. menjadikannya mencabar untuk menghuraikan kandungan yang dikembalikan. Artikel ini menangani kerumitan ini dan menyediakan penyelesaian C# terurus untuk mengendalikan variasi respons yang berbeza dengan lancar.
Cabaran Penghuraian Respons FTP
Respons FTP berbeza-beza bergantung pada perisian pelayan, memimpin kepada format yang tidak konsisten. Sesetengah pelayan FTP menggunakan format DOS/Windows, manakala yang lain menggunakan format *nix, memperkenalkan perbezaan yang ketara.
Penyelesaian C# Terurus
Untuk mengendalikan format respons berubah-ubah ini, penyelesaian C# terurus dibentangkan:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/"); request.Credentials = new NetworkCredential("user", "password"); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream()); string pattern = @"^(\d+-\d+-\d+\s+\d+:\d+(?:AM|PM))\s+(<DIR>|\d+)\s+(.+)$"; Regex regex = new Regex(pattern); IFormatProvider culture = CultureInfo.GetCultureInfo("en-us"); while (!reader.EndOfStream) { string line = reader.ReadLine(); Match match = regex.Match(line); string s = match.Groups[1].Value; DateTime modified = DateTime.ParseExact(s, "MM-dd-yy hh:mmtt", culture, DateTimeStyles.None); s = match.Groups[2].Value; long size = (s != "<DIR>") ? long.Parse(s) : 0; string name = match.Groups[3].Value; Console.WriteLine( "{0,-16} size = {1,9} modified = {2}", name, size, modified.ToString("yyyy-MM-dd HH:mm")); }
Kod ini serasi dengan format respons DOS/Windows, mengekstrak nama fail/direktori, cap masa terakhir diubah suai dan saiz fail.
Pilihan Alternatif
Walaupun menghuraikan respons LIST adalah pendekatan yang sah, adalah disyorkan untuk menggunakan klien FTP yang menyokong arahan MLSD, menyediakan format berstruktur dan standard untuk penyenaraian direktori. Pustaka pihak ketiga, seperti WinSCP, melaksanakan sokongan MLSD dan menawarkan ciri tambahan untuk pengurusan FTP.
Kesimpulannya, penyelesaian C# yang disediakan secara berkesan mengendalikan FTP WebRequestMethods.Ftp.ListDirectoryDetails penghuraian respons, mengambil kira format respons yang pelbagai. Walau bagaimanapun, mempertimbangkan pengehadan kaedah LIST, meneroka pilihan alternatif yang memanfaatkan arahan MLSD disyorkan untuk pengurusan FTP yang optimum.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Jawapan FTP ListDirectoryDetails Diformat Berubah-ubah dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!