📄 interpretunixresponse.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 + -