用C#进行文件读写 [英] File reading and writing in c#

查看:71
本文介绍了用C#进行文件读写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码是

        try
        {
            string mtellThemePath = ConfigurationManager.AppSettings["mtellThemePath"] == null ? Server.MapPath("~/App_Themes/") : ConfigurationManager.AppSettings["mtellThemePath"].Contains("%%") ? Server.MapPath("~/App_Themes") : ConfigurationManager.AppSettings["mtellThemePath"];

            string[] folderPaths = Directory.GetDirectories(mtellThemePath);
            string currentSurveyThemeName = hfSurveyName.Value + "_" + hfClientId.Value;
            string cloneSurveyThemeName = lstSurvey[0].SurveyName + "_" + Identity.Current.UserData.ClientId;
            string cloneSurveyThemePath = mtellThemePath + "\\" + lstSurvey[0].SurveyName + "_" + Identity.Current.UserData.ClientId;

            string cssFile = cloneSurveyThemePath + "\\" + cloneSurveyThemeName + ".css";
            string skinFile = cloneSurveyThemePath + "\\" + cloneSurveyThemeName + ".skin";

            string FileContentCSS = string.Empty;
            string FileContentSkin = string.Empty;

            foreach (string oFolder in folderPaths)
            {
                if (oFolder.Split('\\')[5] == currentSurveyThemeName)
                {
                    string[] cssSkinFiles = Directory.GetFiles(oFolder);
                    foreach (string objFile in cssSkinFiles)
                    {
                        if (objFile.Split('\\')[6].Split('.')[1] == "css")
                        {
                            FileContentCSS = File.ReadAllText(objFile);
                        }
                        if (objFile.Split('\\')[6].Split('.')[1] == "skin")
                        {
                            FileContentSkin = File.ReadAllText(objFile);
                        }
                    }
                }
            }
            Directory.CreateDirectory(cloneSurveyThemePath);
            File.Create(cssFile);
            File.Create(skinFile);
            if (FileContentCSS != string.Empty)
            {
                File.WriteAllText(cssFile, FileContentCSS);
            }
            if (FileContentSkin != string.Empty)
            {
                File.WriteAllText(skinFile, FileContentSkin);
            }
            return lstSurvey[0].SurveyGuid;
        }
        catch (Exception ex)
        {
            throw ex;
        }

它给出错误为:

该进程无法访问文件 'D:\ Projects \ Mtelligence \ Mtelligence.Web \ App_Themes \ Clone_ForCloneTest_-1 \ Clone_ForCloneTest_-1.css' 因为它正在被另一个进程使用.

The process cannot access the file 'D:\Projects\Mtelligence\Mtelligence.Web\App_Themes\Clone_ForCloneTest_-1\Clone_ForCloneTest_-1.css' because it is being used by another process.

请帮助我.......... 该怎么解决

Please Help me .......... how to solve this

我试图从一个文件夹中读取.css,.skin文件,并将相同的文件写入另一个具有不同名称的文件夹中

Iam trying to read .css,.skin files from a folder and write those same files in another folder with different name

推荐答案

查看以下内容:

File.Create(cssFile);
File.Create(skinFile);
if (FileContentCSS != string.Empty)
{
    File.WriteAllText(cssFile, FileContentCSS);
    // ...
}

实际上,File.Create不仅会创建文件,还会创建文件并向其返回打开的流.您随后对File.WriteAllText的调用将尝试编写一个自己打开的文件.在这种情况下(因为您不使用File.Create返回的流),只需将它们删除:

Actually File.Create dos not just create a file but it creates the file and returns an open stream to it. Your subsequent call to File.WriteAllText will try to write a file open by yourself. In you case (because you do not use streams returned by File.Create) simply remove them:

if (FileContentCSS != string.Empty)
{
    File.WriteAllText(cssFile, FileContentCSS);
    // ...
}

这篇关于用C#进行文件读写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆