在我的 ASP.NET MVC项目中,我在一个名为data的文件夹中有一个名为name.txt的文本文件。我想写信给它,但我很难尝试引用它。我的尝试:
string path = Path.Combine(Environment.CurrentDirectory, @"data/", name + ".txt");
StreamWriter file = new StreamWriter(path);
file.WriteLine("Write something in file");
file.Close();
不幸的是,我收到的错误是路径不存在。有没有一种简单易行的方法来获取 ASP.NET 项目中文件夹的文件路径?
谢谢
几件事。
在 ASP.NET Core 中,你需要从IWebHostEnvironment
界面检索运行应用的路径。在下面的代码中,你将在构造函数中看到它使用依赖注入来访问它。
它有两个属性,
ContentRootPath
是应用程序的根
目录WebRootPath
是 wwwroot 文件夹
同样为了简化事情,我用File.WriteAllText()
重构了写入文件,这是一个围绕 StreamWriter 的较新的便利包装器,并且完全按照答案中显示的内容执行。
最后一件事是个人喜好,我选择了字符串插值$""
而不是与+
连接。
public class FileSystemFileController : Controller
{
private readonly IWebHostEnvironment webHostEnvironment;
public FileSystemFileController(IWebHostEnvironment webHostEnvironment)
{
this.webHostEnvironment = webHostEnvironment;
}
public IActionResult Index(string name)
{
string path = Path.Combine(webHostEnvironment.ContentRootPath, $"data/{name}.txt");
System.IO.File.WriteAllText(path, "Write something on file");
return View();
}
}
我想你正在寻找这样的东西,
string path = Path.Combine(Environment.CurrentDirectory, @"data/", name + ".txt");
using (StreamWriter file = new StreamWriter(path))
{
file.Write("Write something on file");
}
file.Close();
请注意,using
第二次尝试时会失败,因此您可能需要查看 @Danny Tuppeny 提供的关于如何创建.txt文件并将其写入 C# asp.net
问候
乔伊