0

2 つのコードを統合するのに問題があります。1 つ目はファイルのサイズをチェックし、2 つ目は SQL データベースをループして、一致するファイル名を探します。私は基本的に、それが新しいファイルかどうか、または前回データの一部をログに記録してからファイルが変更されたかどうかを確認したいと考えています。

これは、ディレクトリ内の各ファイルのサイズを取得します

 // Make a reference to a directory.
        DirectoryInfo di = new DirectoryInfo("C:\\Users");
        // Get a reference to each file in that directory.
        FileInfo[] fiArr = di.GetFiles();
        // Display the names and sizes of the files.
        MessageBox.Show("The directory {0} contains the following files:", di.Name);
        foreach (FileInfo f in fiArr)
            MessageBox.Show("The size of" + f.Name + " is " + f.Length + " bytes.");

このコードは、マッハが見つかるまで、またはすべてのエントリが調べられるまでループします。

  try
            {
                // LINQ query for all files containing the word '.txt'.
                var files = from file in
                                Directory.EnumerateFiles("C:\\Users")
                            where file.ToLower().Contains(".txt")
                            select file;

            foreach (var file in files)
            {
                //Get path to HH file
                filename = System.IO.Path.GetFileName(file);

                tempString = "";

                //Keep looking trough database utill database empty or HH found
                while (inc != numberOfSessions && (filename != tempString))
                { 

                    sessionRow = sessions.Tables["Sessions"].Rows[inc];
                    tempString = sessionRow.ItemArray.GetValue(1).ToString();

                    inc++;
                }

ItemAttay.GetValue(2) が保存されたファイルのサイズを返すとします。次の場合、while ループを最も効率的に維持するにはどうすればよいですか

inc != numberOfSessions && (ファイル名 != tempString) && (sessionRow.ItemArray.GetValue(2) == f.length)

ご覧いただきありがとうございます。

4

1 に答える 1

0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;



    class Program
    {
        static void Main(string[] args)
        {
            var files1 = new List<string>(Directory.GetFiles(args[0],
                "*.txt",
                SearchOption.AllDirectories));


            List<FileData> ListFiles = new List<FileData>();

            for (int i = 0; i < files1.Count; i++)
            { 


            FileInfo file = new FileInfo(files1[i]);
            FileData _tmpfile = new FileData(file.Name.ToString(), file.Length, 
                File.GetLastWriteTime(files1[1]).ToString("yyyy-MM-dd H:mm:ss"),
                File.GetLastAccessTime(files1[1]).ToString("yyyy-MM-dd H:mm:ss"));
            ListFiles.Add(_tmpfile);
            }

            DataSet sessions = new DataSet();
            DataTable dt = sessions.Tables["Sessions"];
            for (int i = 0; i < ListFiles.Count; i++)
            {
                //compares every file in folder to database
                FileData _tmp = ListFiles[i];
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    if (_tmp.GSFileName == dt.Rows[i][0].ToString())
                    { 
                        //put some code here
                        break; 
                    }

                    if (_tmp.GSSize == long.Parse(dt.Rows[i][1].ToString()))
                    {
                        //put some code here
                        break;
                    }

                }


            }



        }
    }
    public class FileData
    {
        string FileName = "";

        public string GSFileName
        {
            get { return FileName; }
            set { FileName = value; }
        }
        long Size = 0;

        public long GSSize
        {
            get { return Size; }
            set { Size = value; }
        }
        string DateOfModification = "";

        public string GSDateOfModification
        {
            get { return DateOfModification; }
            set { DateOfModification = value; }
        }
        string DateOfLastAccess = "";

        public string GSDateOfLastAccess
        {
            get { return DateOfLastAccess; }
            set { DateOfLastAccess = value; }
        }

        public FileData(string fn, long si, string dateofmod, string dateofacc)
        {
            FileName = fn;
            Size = si;
            DateOfModification = dateofmod;
            DateOfLastAccess = dateofacc;

        }

    }
于 2012-08-01T07:02:08.167 に答える