Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghuraikan Penyenaraian Direktori FTP Diformat Berubah-ubah dalam C#?
Menghuraikan Respons FTP untuk Penyenaraian Direktori dengan Format Pembolehubah Menggunakan C#
Pernyataan Masalah:
Dalam membangunkan perkhidmatan untuk memantau lokasi FTP, adalah perlu untuk menghuraikan respons yang diterima daripada a FtpWebRequest menggunakan kaedah WebRequestMethods.Ftp.ListDirectoryDetails. Cabaran timbul disebabkan oleh variasi dalam format respons merentas perisian pelayan FTP. Sebagai contoh, satu pelayan mungkin mengembalikan respons dalam format DOS gaya Windows, manakala pelayan lain mungkin mematuhi format UNIX gaya Linux.
Penyelesaian Penghuraian C# Tersuai:
Walaupun kelas FtpWebRequest tidak mengendalikan variasi format ini secara asli, seseorang boleh mencipta penyelesaian C# tersuai. Untuk format gaya DOS, kod berikut boleh digunakan:
string pattern = "^(\d+-\d+-\d+\s+\d+:\d+(\w{2}))\s+(<DIR>|\d+)\s+(.*)$"; Regex regex = new Regex(pattern); 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} {1,9} {2}", name, size, modified); }
Penyelesaian Moden Menggunakan Perintah MLSD:
Pendekatan yang lebih baik ialah memanfaatkan arahan MLSD , yang disokong oleh pelayan FTP moden. Perintah ini mengembalikan format standard yang boleh dibaca mesin untuk penyenaraian direktori. Pustaka pihak ketiga tertentu, seperti WinSCP .NET, menyokong arahan MLSD dan memberikan hasil yang dihuraikan dengan cara yang konsisten.
RemoteFileInfo[] files = session.EnumerateRemoteFiles(path, null); foreach (RemoteFileInfo file in files) { Console.WriteLine("{0,-16} {1,9} {2}", file.Name, file.Length, file.LastWriteTime); }
Kesimpulan:
Menghuraikan FTP respons penyenaraian direktori memerlukan pengendalian yang teliti terhadap pelbagai format. Walaupun penyelesaian tersuai adalah mungkin, adalah lebih dipercayai untuk menggunakan perpustakaan yang menyokong arahan MLSD moden. Pendekatan ini обеспечивает penghuraian konsisten dan memudahkan tugas mengekstrak metadata fail dan direktori yang berkaitan daripada respons FTP.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Penyenaraian Direktori FTP Diformat Berubah-ubah dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!