文件操作一些总结

来源:互联网 发布:淘宝小店如何推广 编辑:程序博客网 时间:2024/05/17 09:10

操作文件时加锁

.net编程中经常会用到操作文件,特别是xml文件经常会用到

文件操作在多线程中如果不注意经常会碰到"XXX文件正在由另一个进程访问"之类的错误

XmlDocument.Load(string)是托管方法,本身是不需要释放的安全方法

但是由于你多线程可能同时对文件本身访问,所以要加上一些处理在你document处理完了之后,释放掉资源就可以了
document.RemoveAll();
document = null;

但这样并不保险,上面的问题还是存在,最好在文件操作的时候加上锁,即当前只允许一个线程访问,而且最好是一个全局静态锁 如:

public static object FileLockObj = new object();    //文件访问锁

 

操作文件时加锁

lock (FileLockObj)
 {
 //更新配置
XmlUtils xu = new XmlUtils();
xu.EditFileConfigTimes(app.Name, app.Times);
 }


递归处理文件夹

public static void DealFiles(string filePath)
        {
            DirectoryInfo fatherFolder = new DirectoryInfo(filePath);
            //处理当前文件夹内文件
            FileInfo[] files = fatherFolder.GetFiles();
            foreach (FileInfo file in files)
            {
                string fileName = file.Name;
                try
                {
                    Console.WriteLine("XXX");
                    //var upLoaded = UpLoadFile(file);
                    //if (upLoaded)
                    //{
                    //    //file.Delete();
                    //}
                    Console.WriteLine(file.Name + "XXX");
                   
                }
                catch (Exception ex)
                {
                }
            }
           
            //递归处理子文件夹内文件
            foreach (DirectoryInfo childFolder in fatherFolder.GetDirectories())
            {
                DealFiles(childFolder.FullName);
            }
        }

---end---

 

0 0
原创粉丝点击