Newer
Older
wbackup / wbackup / ListingArchiveSourceFile.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Concurrent;
using System.Numerics;
using System.IO;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace wbackup
{
    class ListingArchiveSourceFile : ListingSourceFiles
    {
        public ListingArchiveSourceFile(BackupStreamBase stream = null) : base(stream)
        {

        }

        protected override void DoWork(string sourceFileName)
        {
            ListingSourceFiles(sourceFileName);
        }

        /// <summary>
        /// ソースファイルのリストを作成する
        /// </summary>
        /// <param name="rootFolder"></param>
        protected void ListingSourceFiles(string rootFolder)
        {
            foreach (string fileName in Directory.GetFiles(rootFolder))
            {
                if (false == isIgnoreFile(fileName))
                {
                    var fileAttrib = File.GetAttributes(fileName);
                    if (false == fileAttrib.HasFlag(FileAttributes.Hidden) && true == fileAttrib.HasFlag(FileAttributes.Archive))
                    {
                        if (log.IsDebugEnabled) log.DebugFormat("Add File, {0}, {1:X}", fileName, fileAttrib);

                        File.SetAttributes(fileName, fileAttrib | FileAttributes.Archive);
                        AddNextSource(fileName);
                    }
                    else
                    {
                        if (log.IsDebugEnabled) log.DebugFormat("Not Archive File, {0}, {1:X}", fileName, fileAttrib);
                    }
                }
                else
                {
                    if (log.IsDebugEnabled) log.DebugFormat("Ignore File, {0}", fileName);
                }
            }

            foreach (string directory in Directory.GetDirectories(rootFolder))
            {
                var dirAttrib = File.GetAttributes(directory);
                if (false == dirAttrib.HasFlag(FileAttributes.Hidden))
                {
                    if (log.IsDebugEnabled) log.DebugFormat("Open Directory, {0}", directory);
                    ListingSourceFiles(directory);
                }
            }
        }
    }
}