예제 #1
0
        /// <summary>
        /// Gets the specified file's size
        /// </summary>
        /// <param name="file">The file to get the size for</param>
        /// <returns>The file size in bytes</returns>
        public long GetFileSize(string file)
        {
            IntPtr hFile = new IntPtr(
                WININET.FtpOpenFile(_hConnect, file, WINAPI.GENERIC_READ, WININET.FTP_TRANSFER_TYPE_BINARY, IntPtr.Zero)
                );

            if (hFile == IntPtr.Zero)
            {
                Error();
            }
            else
            {
                try
                {
                    int sizeHigh = 0;
                    int sizeLo   = WININET.FtpGetFileSize(hFile, ref sizeHigh);

#pragma warning disable CS0675 // Bitwise-or operator used on a sign-extended operand
                    long fileSize = ((long)sizeHigh << 32) | sizeLo;
#pragma warning restore CS0675 // Bitwise-or operator used on a sign-extended operand

                    return(fileSize);
                }
                catch (Exception)
                {
                    Error();
                }
                finally
                {
                    WININET.InternetCloseHandle(hFile);
                }
            }

            return(0);
        }
예제 #2
0
        /// <summary>
        /// Gets the specified file's size
        /// </summary>
        /// <param name="file">The file to get the size for</param>
        /// <returns>The file size in bytes</returns>
        public long GetFileSize(string file)
        {
            IntPtr hFile = new IntPtr(
                WININET.FtpOpenFile(_hConnect, file, WINAPI.GENERIC_READ, WININET.FTP_TRANSFER_TYPE_BINARY, IntPtr.Zero)
                );

            if (hFile == IntPtr.Zero)
            {
                Error();
            }
            else
            {
                try
                {
                    int sizeHigh = 0;
                    int sizeLo   = WININET.FtpGetFileSize(hFile, ref sizeHigh);

                    long fileSize = ((long)sizeHigh << 32) | sizeLo;

                    return(fileSize);
                }
                catch (Exception)
                {
                    Error();
                }
                finally
                {
                    WININET.InternetCloseHandle(hFile);
                }
            }

            return(0);
        }
예제 #3
0
        public long GetFileSize(string file)
        {
            IntPtr hConnect = new(WININET.FtpOpenFile(_hConnect, file, 0x8000_0000, 2, IntPtr.Zero));

            switch ((hConnect == IntPtr.Zero))
            {
            case false:
                try
                {
                    int dwFileSizeHigh = 0;
                    int num2           = WININET.FtpGetFileSize(hConnect, ref dwFileSizeHigh);
                    return((dwFileSizeHigh << 0x20) | num2);
                }
                catch (Exception)
                {
                    Error();
                }
                finally
                {
                    WININET.InternetCloseHandle(hConnect);
                }

                break;

            default:
                Error();
                break;
            }

            return(0L);
        }
예제 #4
0
        public long GetFileSize(string file)
        {
            IntPtr hConnect = new IntPtr(WININET.FtpOpenFile(_hConnect, file, 0x8000_0000, 2, IntPtr.Zero));

            if (!(hConnect == IntPtr.Zero))
            {
                try
                {
                    int dwFileSizeHigh = 0;
                    int num2           = WININET.FtpGetFileSize(hConnect, ref dwFileSizeHigh);
                    return((dwFileSizeHigh << 0x20) | num2);
                }
                catch (Exception)
                {
                    Error();
                }
                finally
                {
                    WININET.InternetCloseHandle(hConnect);
                }
            }
            else
            {
                Error();
            }
            return(0L);
        }