using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Common.Helper
{
    public static class FileHelp
    {
        /// <summary>
        /// 下载视频
        /// </summary>
        /// <param name="pathUrl">下载地址</param>
        /// <param name="path">保存路径</param>
        public static void DownLoadVideo(string pathUrl,string path)
        {
            System.Net.HttpWebRequest request = null;
            System.Net.HttpWebResponse response = null;
            //请求网络路径地址
            request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(pathUrl);
            request.Timeout = 5000; // 超时时间
            //获得请求结果
            response = (System.Net.HttpWebResponse)request.GetResponse();

            Stream stream = response.GetResponseStream();
            //先创建文件
            Stream sos = new System.IO.FileStream(path, System.IO.FileMode.Create);
            byte[] img = new byte[1024];
            int total = stream.Read(img, 0, img.Length);
            while (total > 0)
            {
                //之后再输出内容
                sos.Write(img, 0, total);
                total = stream.Read(img, 0, img.Length);
            }
            stream.Close();
            stream.Dispose();
            sos.Close();
            sos.Dispose();
        }
        #region 文件下载
        public static bool FilesDown(string Url,string pathFile)
        {
            try
            {
                WriteBytesToFile(pathFile, GetBytesFromUrl(Url));
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        private static byte[] GetBytesFromUrl(string url)
        {
            byte[] b;
            HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
            WebResponse myResp = myReq.GetResponse();

            Stream stream = myResp.GetResponseStream();
            using (BinaryReader br = new BinaryReader(stream))
            {
                b = br.ReadBytes(500000);
                br.Close();
            }
            myResp.Close();
            return b;
        }
        private static void WriteBytesToFile(string fileName, byte[] content)
        {
            FileStream fs = new FileStream(fileName, FileMode.Create);
            BinaryWriter w = new BinaryWriter(fs);
            try
            {
                w.Write(content);
            }
            finally
            {
                fs.Close();
                w.Close();
            }
        }
        #endregion
    }
}