⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interpretunixresponse.cs

📁 C#的FTP客户端演示例子
💻 CS
字号:
namespace FTP.Model {
  using System;
  using FTP.Model.DataStructures;
  
  public class InterpretUnixResponse {
    private const string  CRLF = "\r\n";
    
    // Extract details from a UNIX response
    public  ServerFileData[] processLISTResponse(string pLISTResponse) {
      // Make an array - each entry is a string containing file details
      pLISTResponse = pLISTResponse.Replace (CRLF, "\r");
      string[] responseLines   = pLISTResponse.Split(new Char[]{'\r'});
      ServerFileData[] workingFileData  = new ServerFileData[responseLines.Length-1]; // -1 because the last line is empty
      
      int validLines  = 0;  // some lines may be junk is SOME unix systems      
      for (int i=0; i<workingFileData.Length; i++) {
        workingFileData[i] = this.processLISTResponseLine(responseLines[i]);
        if (workingFileData[i] != null) 
          validLines ++;
      }
      // Copy the valid lines into returnFileData
      ServerFileData[] returnFileData   = new ServerFileData[validLines];
      validLines  = 0;
      for (int i=0; i<workingFileData.Length; i++) {
        if (workingFileData[i] != null) {
          returnFileData[validLines] = workingFileData[i];
          validLines++;
        }
      }
      return returnFileData;
    }

    private ServerFileData processLISTResponseLine(string pResponseLine) {
//System.Windows.Forms.MessageBox.Show("Response Line is  >" + pResponseLine + "<", "", 
//  System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);

      ServerFileData  returnFileData = new ServerFileData();

      try {
        string[] parsed = new string [8];
        int index = 0;
       int position;

        returnFileData.permission = pResponseLine;
        
        // Parse out the elements
        position  = pResponseLine.IndexOf(' ');
        while (index<parsed.Length) {
          parsed[index] = pResponseLine.Substring(0, position);
          pResponseLine = pResponseLine.Substring(position);
          pResponseLine = pResponseLine.Trim();
          index++;
          position  = pResponseLine.IndexOf(' ');
        }
        returnFileData.fileName   = pResponseLine;  // Remainder is the file/folder name
          
        returnFileData.permission = parsed[0];
        returnFileData.owner      = parsed[2];
        returnFileData.group      = parsed[3];
        returnFileData.size       = Convert.ToUInt32(parsed[4]);
        // To do: make this a true DateTime type
        returnFileData.date       = parsed[5]+ ' ' + parsed[6] + ' ' + parsed[7];
        returnFileData.isDirectory = returnFileData.permission[0] == 'd';
      }
      catch {
        // There was an error so ignore this line
        returnFileData  = null;
      }
   
    return returnFileData;
    }
    public string processPWDResponse(string pResponseLine) {
      pResponseLine     = pResponseLine.Substring(pResponseLine.IndexOf('"')+1);
      pResponseLine     = pResponseLine.Substring(0, pResponseLine.IndexOf('"'));
//System.Windows.Forms.MessageBox.Show("PWD is  >" + pResponseLine + "<", "", 
//  System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
      // Return the current directory
      return pResponseLine;
    }

/*
    public string processCWDResponse(string pResponseLine) {
      pResponseLine     = pResponseLine.Substring(pResponseLine.IndexOf('"')+1);
      pResponseLine     = pResponseLine.Substring(0, pResponseLine.IndexOf('"'));
      
      // Return the current directory
      return pResponseLine;
    }
*/
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -