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所写。我不认为你可以把你读的文件写进同一个文件。原因是它已经专门为阅读而打开。您必须打开它进行读写操作,但无法打开已打开的文件,必须先将其关闭。