问题:
  现在本地硬盘有个数据库,会定时存入一些xls文件,文件名按存入的系统时间命名,比如11:50存的文件:201005101150.xls这样子。比如说,现在文件夹里有3个文件:一个20分钟的,一个36分钟的,一个45分钟的,然后我输入一个查找条件:26分,哪么我要找的就是36分钟的文件,当然如果有26分的文件,那找的就是26分钟的文件。也就是说要查找到跟它最接近而且必须在它后面时间存入的文件。我想知道索引文件有没有这样的方法,找到目录下最接近且在它后面的一个文件。

解决方案 »

  1.   

    估计没有,你可以自己写个函数判断
    下面这个是我写的函数,文件夹名是XX_20081011_111000 这种格式
    /// <summary>
            /// 得到指定路径下与指定时间最相近并比指定时间大的目录
            /// </summary>
            /// <param name="filePath">指定的路径</param>
            /// <param name="dTime">指定的时间</param>
            /// <returns>指定路径下与当前时间最相近并比指定时间大的目录</returns>
            private string GetNextFilePath(string filePath, DateTime dTime)
            {
                if (!Directory.Exists(filePath))
                {
                    return string.Empty;
                }            string[] strDirectoryArr = Directory.GetDirectories(filePath);
                if (strDirectoryArr.Length == 0)
                {
                    return string.Empty;
                }
                //最新路径
                string newestFilePath = "";
                //临时保存时间
                DateTime tmpDateTime = DateTime.MinValue;
                //临时的比较时间
                DateTime cmpDateTime = DateTime.MinValue;
                string[] strArr = null;            bool isFirst = true;
                foreach (string directory in strDirectoryArr)
                {
                    strArr = directory.Substring(directory.LastIndexOf('\\')).Split('_');
                    if (strArr.Length != 3)
                    {
                        continue;
                    }
                    cmpDateTime = new DateTime(Convert.ToInt32(strArr[1].Substring(0, 4)), Convert.ToInt32(strArr[1].Substring(4, 2)), Convert.ToInt32(strArr[1].Substring(6, 2)),
                        Convert.ToInt32(strArr[2].Substring(0, 2)), Convert.ToInt32(strArr[2].Substring(2, 2)), Convert.ToInt32(strArr[2].Substring(4, 2)));                //如果指定时间大于比较时间,则Continue
                    if (dTime.CompareTo(cmpDateTime) > 0)
                    {
                        continue;
                    }                if (isFirst)
                    {
                        isFirst = false;
                        tmpDateTime = cmpDateTime;
                        newestFilePath = directory;
                    }
                    //如果临时保存的时间比当前文件的时间大,则给最新路径和临时时间重新赋值
                    else if (tmpDateTime.CompareTo(cmpDateTime) > 0)
                    {
                        newestFilePath = directory;
                        tmpDateTime = cmpDateTime;
                    }
                    
                    //给文件目录的时间部分重新赋值
                    this.m_FileTime = tmpDateTime;
                }
                return newestFilePath;
            }