예제 #1
0
        /// <summary>
        /// add files in folder to bitstransfer, including files in sub folders
        /// </summary>
        /// <param name="job">bitsjob</param>
        /// <param name="remoteShare">remoete location</param>
        /// <param name="localDir">local directory</param>
        /// <param name="fileFilter">only files match the filter will be transferred</param>
        public static void AddFolder(this BitsTransfer.BitsJob job,
                                     string remoteShare,
                                     string localDir,
                                     Func <string, bool> fileFilter = null)
        {
            if (!Directory.Exists(remoteShare))
            {
                throw new InvalidOperationException("remoteShare must be a directory");
            }
            if (!Directory.Exists(localDir))
            {
                Directory.CreateDirectory(localDir);
            }

            IEnumerable <string> files = Directory.GetFiles(remoteShare, "*.*", SearchOption.AllDirectories);

            if (fileFilter != null)
            {
                files = files.Where(fileFilter);
            }
            foreach (string file in files)
            {
                string path      = GetRelativePath(file, remoteShare);
                string localPath = Path.Combine(localDir, path);
                Debug.WriteLine("- remote file:" + file);
                Debug.WriteLine(" local file:" + localPath);
                string fileDir = Path.GetDirectoryName(localPath);
                if (!Directory.Exists(fileDir))
                {
                    Directory.CreateDirectory(fileDir);
                }
                job.AddFile(file, localPath);
            }
        }
예제 #2
0
            public BitsProgressWatch(BitsTransfer.BitsJob job)
            {
                if (job == null)
                {
                    throw new ArgumentNullException("job");
                }

                this._timer = new Timer(OnTimerTick, job, Timeout.Infinite, Timeout.Infinite);
            }