Asp.net mvc 如何使用streamwriter覆盖文本文件

Asp.net mvc 如何使用streamwriter覆盖文本文件,asp.net-mvc,Asp.net Mvc,我试图用其他文本覆盖文本文件时遇到问题。我得到错误:“流不可写。” 这是我的代码: [HttpPost] public JsonResult FilterFile(HttpPostedFileBase file) { var resultMessage = ""; var text = ""; var lineCount = 0; try {

我试图用其他文本覆盖文本文件时遇到问题。我得到错误:“流不可写。” 这是我的代码:

[HttpPost]
        public JsonResult FilterFile(HttpPostedFileBase file)
        {
            var resultMessage = "";
            var text = "";
            var lineCount = 0;
            try
            {
                if (file != null && file.ContentLength > 0)
                {
                    var stream = file.InputStream;

                    using (var sr = new StreamReader(stream))
                    {

                        var line = "";
                        while ((line = sr.ReadLine()) != null)
                        {
                            lineCount++;
                            if (line.Split(' ').Count() > 1)
                            {
                                var number = line.Split(' ')[0];
                                if (!string.IsNullOrEmpty(number))
                                    line = line.Replace(number, "");
                                text = text + line + Environment.NewLine;
                            }

                        }

                        var sw = new StreamWriter(stream);

                        foreach (var l in text)
                        {
                            sw.Write(l);
                        }
                    }
                }

                resultMessage = "The task was completed successfully!!";
            }
            catch (Exception ex)
            {
                resultMessage = ex.Message;
            }
            return Json(resultMessage);
        }

如果有人能帮助我,我将不胜感激,因为我对这一切都不熟悉。谢谢。

根据文档,是:

用于读取文件的对象

那条流只为阅读而打开

为了能够写入流,您需要一个为写入而打开的流。例如:

var writableStream = new FileStream(
    @"filename.txt",
    FileMode.OpenOrCreate, 
    FileAccess.ReadWrite);

var sw = new StreamWriter(writableStream);

我不明白。为什么要尝试写入
InputStream
?这并不奇怪,你不能这样做…我同意计算机的观点,那条流属于一个HttpPostedFile,所以是用户上传的二进制文件。它将在内存中,可能是只读的。打开一个指向全新文件的流,或者跳过该流并直接处理字节数组。感谢您的回答,但现在我收到了以下错误:“访问路径‘C:\Program Files(x86)\IIS Express\Test.txt’被拒绝。感谢您的回答,但现在我收到了以下错误:“访问路径‘C:\Program Files(x86)\IIS Express\Test.txt’被拒绝。”这不是正确的路径。请帮忙。谢谢。我还想覆盖它读取的同一个文件。@BYG进程无法访问您的路径。将文件写入项目的子目录,或者让运行站点的帐户访问您要写入的目录。是的,正如@Fran所写。我不认为你可以把你读的文件写进同一个文件。原因是它已经专门为阅读而打开。您必须打开它进行读写操作,但无法打开已打开的文件,必须先将其关闭。