コード例 #1
0
 internal FTPFile(string name, FTPFileType type, int size, DateTime date)
 {
     m_name = name;
     m_size = size;
     m_type = type;
     m_date = date;
 }
コード例 #2
0
ファイル: FTPFile.cs プロジェクト: hjgode/batterytest
 internal FTPFile(string name, FTPFileType type, int size, DateTime date)
 {
     m_name = name;
     m_size = size;
     m_type = type;
     m_date = date;
 }
コード例 #3
0
        /// <summary>
        /// Get a list of the files in the current remote directory
        /// <seealso cref="FTPFiles"/>
        /// <seealso cref="RemoteDirectory"/>
        /// </summary>
        /// <returns>An FTPFiles of the remote files</returns>
        public FTPFiles EnumFiles()
        {
            FTPFiles files = new FTPFiles();

            string fileList = GetFileList(true);

            if (fileList.Length == 0)
            {
                return(null);
            }


            string[]    lines    = fileList.Replace("\n", "").Split('\r');
            DateTime    filedate = new DateTime(0);
            int         filesize = 0;
            FTPFileType filetype = FTPFileType.File;
            int         pos      = 0;

            switch (m_server)
            {
            case FTPServerType.Windows:
            {
                for (int l = 0; l < lines.Length; l++)
                {
                    if (lines[l].Trim().Length == 0)
                    {
                        continue;
                    }

                    // get file date
                    try
                    {
                        filedate = Convert.ToDateTime(lines[l].Substring(0, 17));
                    }
                    catch (Exception)
                    {
                        continue;
                    }

                    lines[l] = lines[l].Substring(18).Trim();

                    // get type
                    if (lines[l].IndexOf("<DIR>") > -1)
                    {
                        // IIS directory
                        filetype = FTPFileType.Directory;
                        lines[l] = lines[l].Replace("<DIR>", "").Trim();

                        // no size
                        filesize = -1;
                    }
                    else
                    {
                        filetype = FTPFileType.File;

                        // get size
                        pos = lines[l].IndexOf(' ');

                        if (pos < 0)
                        {
                            continue;
                        }

                        filesize = Convert.ToInt32(lines[l].Substring(0, pos));
                        lines[l] = lines[l].Substring(pos).Trim();
                    }

                    files.Add(new FTPFile(lines[l], filetype, filesize, filedate));
                }

                return(files);
            }

            case FTPServerType.Unix:
            {
                for (int l = 0; l < lines.Length; l++)
                {
                    if (lines[l].Length == 0)
                    {
                        continue;
                    }

                    if (lines[l][0] == 'd')
                    {
                        filetype = FTPFileType.Directory;
                    }
                    else
                    {
                        filetype = FTPFileType.File;
                    }

                    // crop the permissions info, etc.
                    lines[l] = lines[l].Substring(30).Trim();

                    // get size
                    pos = lines[l].IndexOf(' ');

                    if (pos < 0)
                    {
                        continue;
                    }

                    try
                    {
                        filesize = Convert.ToInt32(lines[l].Substring(0, pos));
                    }
                    catch (Exception)
                    {
                        continue;
                    }

                    lines[l] = lines[l].Substring(pos).Trim();

                    // get file date
                    try
                    {
                        int y, m, d, h, n;

                        switch (lines[l].Substring(0, 3).ToLower())
                        {
                        case "jan":
                            m = 1;
                            break;

                        case "feb":
                            m = 2;
                            break;

                        case "mar":
                            m = 3;
                            break;

                        case "apr":
                            m = 4;
                            break;

                        case "may":
                            m = 5;
                            break;

                        case "jun":
                            m = 6;
                            break;

                        case "jul":
                            m = 7;
                            break;

                        case "aug":
                            m = 8;
                            break;

                        case "sep":
                            m = 9;
                            break;

                        case "oct":
                            m = 10;
                            break;

                        case "nov":
                            m = 11;
                            break;

                        case "dec":
                            m = 12;
                            break;

                        default:
                            m = 1;
                            break;
                        }

                        d = int.Parse(lines[l].Substring(4, 2));

                        if (lines[l].IndexOf(':') > -1)
                        {
                            // time

                            h = int.Parse(lines[l].Substring(7, 2));
                            n = int.Parse(lines[l].Substring(10, 2));
                            y = DateTime.Now.Year;
                        }
                        else
                        {
                            // year
                            h = 0;
                            n = 0;

                            y = int.Parse(lines[l].Substring(8, 4));
                        }

                        filedate = new DateTime(y, m, d, h, n, 0);
                    }
                    catch (Exception)
                    {
                        filedate = DateTime.MinValue;
                    }

                    lines[l] = lines[l].Substring(12).Trim();

                    files.Add(new FTPFile(lines[l], filetype, filesize, filedate));
                }
                return(files);
            }

            default:
            {
                return(null);
            }
            }
        }