C# 文件创建时出现StreamWriter和FileStream错误

C# 文件创建时出现StreamWriter和FileStream错误,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器中有一个Save ActionResult,设置为使用StreamWriter。该代码可以完美地保存到现有的文件中 保存操作 [HttpPost] [ValidateInput(false)] public ActionResult Save(string fileName, string startTemplateUrl, string html) { string directoryname = Path.GetDirectoryN

我的控制器中有一个Save ActionResult,设置为使用StreamWriter。该代码可以完美地保存到现有的文件中

保存操作

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Save(string fileName,  string startTemplateUrl, string html)
    {
        string directoryname = Path.GetDirectoryName(fileName);
        string filename = Path.GetFileName(fileName);
        var lines =  html;
        var helper = (Server.MapPath(directoryname));
        using (StreamWriter outputFile = new StreamWriter(Path.Combine(helper, filename)))
        {
            outputFile.WriteLine(lines);
            return View();
        }

    }
我现在正在创建一个文件,据我所知,您可以使用StreamWriter来实现它,尽管当我尝试实现它时,它说找不到它。这告诉我它正在寻找一个文件,而不是创建它

所以我试着用FileInfo实现它。它似乎拥有它所需要的一切,但却无法保存它。下面是我的最新代码。它不喜欢这个

fs.Write(lines);
我有一个试接块。在这一点上,它得到了相同的结果。它找不到它

    [HttpPost]
    [ValidateInput(false)]
    public ActionResult Create (string fileName, string startTemplateUrl, string html)
    {
        string directoryname = Path.GetDirectoryName(fileName);
        string filename = Path.GetFileName(fileName);
        var lines = html;
        var helper = (Server.MapPath(directoryname));
        var file = "Test\\" + filename;
        var pathString = System.IO.Path.Combine(helper, "Test\\", filename);
        FileInfo fi = new FileInfo(pathString);

            if (fi.Exists)
            {
                fi.Delete();
            }
            using (FileStream fs = fi.Create())
            {
                fs.Write(lines);
                return View();
            }

    }
谢谢你的帮助

更新:

这就是我得到的信息。在消息下方,我有从文件夹资源管理器复制到目录的实际字符串

Exception thrown: 'System.IO.DirectoryNotFoundException' in mscorlib.dll
An exception of type 'System.IO.DirectoryNotFoundException' occurred in mscorlib.dll but was not handled in user code
Could not find a part of the path 'C:\Users\Scott\source\repos\HMIBuilder\HMIBuilder\Files\HMIBuider\Test\Test2.html'.

C:\Users\Scott\source\repos\HMIBuilder\HMIBuilder\Files\HMIBuilder\Test
更新:

我需要更好地查看我的代码!这是固定的。。最上面的代码对保存和创建都非常有效。问题在于我输入的javascript代码变量。打字错误。。。如果你看一下上面的比较,我自己也不明白,我想太多的长夜,HMIBuider拼写为HMIBuider。。。在错误中

using (StreamWriter outputFile = new StreamWriter(Path.Combine(path, "filename.txt")))
如果需要,将创建一个新文件

您的问题可能是
Test
目录和
CreateDirectory
在此提供帮助

DirectoryInfo di = Directory.CreateDirectory(path);

如果我们将写入文件和创建目录放在一起,它可能看起来像下面的代码片段

var path = "./MyFiles/SpecialFiles";
var filename = "thisIsAVerySpecialFile.txt";
Directory.CreateDirectory(path);
//Create a new file or overwrite existing (i.e. *not* append)
using (var f = new StreamWriter(Path.Combine(path, filename)))
{
    f.WriteLine("Hello world!");
}

如果没有
Directory.CreateDirectory
,代码将导致
System.IO.DirectoryNotFoundException
,其中
无法找到路径的一部分“(…)”。

您试图在其中创建文件的文件夹是否存在?您必须确保该目录存在,或者将其作为单独的步骤创建,否则文件创建将失败。问题不在于目录。它存在。它只是通过调试返回,我找不到或找不到“我给它的url字符串”的一部分。然而事实上它就在那里。我尝试了以文件夹和“新文件”名称结尾的字符串。。