FindFiles() публичный Метод

public FindFiles ( String Path ) : IEnumerable
Path String
Результат IEnumerable
        public int FindFiles(string filename, LinkedList <FileInformation> files, Dokan.DokanFileInfo info)
        {
            Console.WriteLine("FindFiles: " + filename + ":" + info);
            //foreach (var Item in FileSystem.FindFiles(filename.Replace(@"\", "/")))
            foreach (var Item in FileSystem.FindFiles(filename))
            {
                var FileInformation = new FileInformation();
                FillFileInformationFromFileSystemEntry(FileInformation, Item);

                //FileInformation.CreationTime.

                /*
                 * Console.WriteLine("------------------------------------------------");
                 * Console.WriteLine("CreationTime  : " + FileInformation.CreationTime);
                 * Console.WriteLine("LastWriteTime : " + FileInformation.LastWriteTime);
                 * Console.WriteLine("LastAccessTime: " + FileInformation.LastAccessTime);
                 * Console.WriteLine("------------------------------------------------");
                 */

                //var AvailableDate = Item.Time.CreationTime ?? Item.Time.LastWriteTime ?? Item.Time.LastAccessTime;

                /*
                 * FileInformation.CreationTime = DateTime.Now;
                 * FileInformation.LastAccessTime = DateTime.Now;
                 * FileInformation.LastWriteTime = DateTime.Now;
                 */
                //FileInformation.Length = 10001;
                //Console.WriteLine(Item);
                files.AddLast(FileInformation);
            }
            //Thread.Sleep(400);
            return(0);
            //NotImplemented();
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="SourceFileSystem"></param>
        /// <param name="SourcePath"></param>
        /// <param name="DestFileSystem"></param>
        /// <param name="DestPath"></param>
        /// <param name="ActionValidate"></param>
        /// <param name="ActionProgress"></param>
        static public void CopyTree(FileSystem SourceFileSystem, String SourcePath, FileSystem DestFileSystem, String DestPath, Func <FileSystemEntry, bool> ActionValidate = null, Action <FileSystemEntry, long, long> ActionProgress = null, byte[] Buffer = null)
        {
            if (ActionValidate == null)
            {
                ActionValidate = ((Entry) => true);
            }
            if (ActionProgress == null)
            {
                ActionProgress = (Entry, Current, Max) => { }
            }
            ;
            //if (Buffer == null) Buffer = new byte[16 * 1024 * 1024];
            if (Buffer == null)
            {
                Buffer = new byte[2 * 1024 * 1024];
            }

            foreach (var SourceEntry in SourceFileSystem.FindFiles(SourcePath))
            {
                var SourceFullPath = SourcePath + "/" + SourceEntry.Name;
                var DestFullPath   = DestPath + "/" + SourceEntry.Name;

                if (!ActionValidate(SourceEntry))
                {
                    continue;
                }

                if (SourceEntry.Type == FileSystemEntry.EntryType.Directory)
                {
                    DestFileSystem.CreateDirectory(DestFullPath, 0777, false);
                    CopyTree(SourceFileSystem, SourceFullPath, DestFileSystem, DestFullPath, ActionValidate, ActionProgress, Buffer);
                }
                else
                {
                    //
                    if (
                        !DestFileSystem.Exists(DestFullPath) ||
                        (SourceFileSystem.GetFileInfo(SourceFullPath).Size != DestFileSystem.GetFileInfo(DestFullPath).Size)
                        )
                    {
                        using (var SourceStream = SourceFileSystem.OpenFileRead(SourceFullPath))
                            using (var DestStream = DestFileSystem.OpenFile(DestFullPath, FileMode.Create))
                            {
                                SourceStream.CopyToFast(DestStream, Buffer, (Current, Max) =>
                                {
                                    ActionProgress(SourceEntry, Current, Max);
                                });
                            }
                    }
                }
            }

            Buffer = null;
        }
Пример #3
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="SourceFileSystem"></param>
		/// <param name="SourcePath"></param>
		/// <param name="DestFileSystem"></param>
		/// <param name="DestPath"></param>
		/// <param name="ActionValidate"></param>
		/// <param name="ActionProgress"></param>
		static public void CopyTree(FileSystem SourceFileSystem, String SourcePath, FileSystem DestFileSystem, String DestPath, Func<FileSystemEntry, bool> ActionValidate = null, Action<FileSystemEntry, long, long> ActionProgress = null, byte[] Buffer = null)
		{
			if (ActionValidate == null) ActionValidate = ((Entry) => true);
			if (ActionProgress == null) ActionProgress = (Entry, Current, Max) => { };
			//if (Buffer == null) Buffer = new byte[16 * 1024 * 1024];
			if (Buffer == null) Buffer = new byte[2 * 1024 * 1024];

			foreach (var SourceEntry in SourceFileSystem.FindFiles(SourcePath))
			{
				var SourceFullPath = SourcePath + "/" + SourceEntry.Name;
				var DestFullPath = DestPath + "/" + SourceEntry.Name;

				if (!ActionValidate(SourceEntry)) continue;

				if (SourceEntry.Type == FileSystemEntry.EntryType.Directory)
				{
					DestFileSystem.CreateDirectory(DestFullPath, 0777, false);
					CopyTree(SourceFileSystem, SourceFullPath, DestFileSystem, DestFullPath, ActionValidate, ActionProgress, Buffer);
				}
				else
				{
					//
					if (
						!DestFileSystem.Exists(DestFullPath) ||
						(SourceFileSystem.GetFileInfo(SourceFullPath).Size != DestFileSystem.GetFileInfo(DestFullPath).Size)
					)
					{
						using (var SourceStream = SourceFileSystem.OpenFileRead(SourceFullPath))
						using (var DestStream = DestFileSystem.OpenFile(DestFullPath, FileMode.Create))
						{
							SourceStream.CopyToFast(DestStream, Buffer, (Current, Max) =>
							{
								ActionProgress(SourceEntry, Current, Max);
							});
						}
					}
				}
			}

			Buffer = null;
		}