聊城做网站的,北京公司网站建站,wordpress文章批量编辑器,公众平台网站价格事情的经过是这样子的#xff01;数据库A表添加一条记录#xff0c;**系统中B目录下就会多出5n个文件。随着系统运行3年多#xff0c;B目录中的文件数已高达2M多#xff0c;而这些文件恰恰又是用户高度频繁访问的。于是问题就来了#xff0c;一方面是用户访问文件速度变慢… 事情的经过是这样子的数据库A表添加一条记录**系统中B目录下就会多出5n个文件。随着系统运行3年多B目录中的文件数已高达2M多而这些文件恰恰又是用户高度频繁访问的。于是问题就来了一方面是用户访问文件速度变慢了另一方面是文件太多很难维护。 怎么办呢思许良久发现A表中有个录入时间字段是不会变更的。如果截取录入时间的年份月份组成用来创建B目录下的子目录名把当年当月新增的文件统一归档于该子目录下不就可以吗新增的文件好处理可对于旧文件归档需要费点周折因为文件得迁移到新的子目录里。 下面是关于文件迁移的主要代码 static void Main(string[] args)
{string paperPath ConfigurationManager.AppSettings[PaperBuildPath];Console.WriteLine(string.Format(试卷目录{0}, paperPath));Console.WriteLine();Console.WriteLine(目录是否正确? 正确请按任意键......);Console.WriteLine();Console.ReadKey();string[] files Directory.GetFiles(paperPath);int num 0;PublicExam[] list Gateway.Default.FindArrayPublicExam();foreach (PublicExam publicExam in list){foreach (string file in files){//源文件名(去除路径后)string fileName file.Split(\\).Last();if (fileName.StartsWith(publicExam.FGuid.ToString(), StringComparison.CurrentCultureIgnoreCase)){//目标文件夹string destFilePath paperPath publicExam.FInputTime.ToString(yyyyMM);if (Directory.Exists(destFilePath) false)Directory.CreateDirectory(destFilePath);//目标文件名string destFileName destFilePath \\ fileName;if (File.Exists(destFileName))File.Delete(destFileName);Console.WriteLine(string.Format(正在迁移文件{0}, fileName));//迁移文件File.Move(file, destFileName);num;}}}Console.WriteLine();Console.WriteLine(string.Format(共迁移{0}个文件,请按任意键退出......, num));Console.ReadKey();
}上面例子参考了MSDN 关于File Class 和 Directory Class 的使用方法。 执行效果图如下 Tips: 目录名(年份月份) 如201101 c# DateTime.Now.ToString(yyyyMM) SQL convert(varchar(6),getdate(),112) 当然仅仅文件迁移是不够的还有很多工作要做比如修改程序更新数据库表记录等等。我知道这次“手术”不符合开放-关闭原则但也是无奈之举。欢迎各位园友多多拍砖转载于:https://www.cnblogs.com/hailibu/archive/2011/01/05/1926361.html