首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET Core中获取文件的最后修改日期?

如何在ASP.NET Core中获取文件的最后修改日期?
EN

Stack Overflow用户
提问于 2016-03-31 07:04:08
回答 4查看 4.8K关注 0票数 5

我正在移植一个小MVC 5网站到MVC 6,以发现突破的变化。东西坏了。

MVC 5代码使用@File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))获得时间戳,这是推荐的这里。显然,在MVC 6中,.cshtml页面不再有ServerVirtualPath成员。新咒语是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-12-12 07:31:22

18个月后再讨论我自己的问题..。现在的框架是ASP.NET Core2.0MVC,而且框架、文档和最佳实践似乎都发生了一些变化。

您应该像在FileProvider中所描述的那样使用博士。在这里重新创建这篇文章是没有意义的,但请确保:

  • 将IHostingEnvironment添加到启动构造函数参数,并将其保存在局部变量中,如文档中所述
  • 在Startup.ConfigureServices()中,调用services.AddSingleton(HostingEnvironment.ContentRootFileProvider);来注册IFileProvider服务,这在文档中也有描述
  • 将IFileProvider添加到控制器的构造函数参数,并将其保存在局部变量中

然后,要实际获得最后修改的日期,控制器将如下所示:

代码语言:javascript
复制
public class HomeController : Controller
{
    private IFileProvider _fileProvider;

    public HomeController(IFileProvider fileProvider)
    {
        _fileProvider = fileProvider;
    }

    public IActionResult Index()
    {
        DateTimeOffset lastModifiedDate = _fileProvider.GetFileInfo(@"Views\Home\Index.cshtml").LastModified;
        // use it wisely...
        return View();
    }
票数 4
EN

Stack Overflow用户

发布于 2016-03-31 07:19:22

您可以从ApplicationBasePath服务中获得IApplicationEnvironment

代码语言:javascript
复制
private readonly IApplicationEnvironment _env;

public FileController(IApplicationEnvironment appEnv)
{
    _env= appEnv;
}

public IActionResult Index()
{
    var myModel = _env.ApplicationBasePath;
    return View(myModel);
}

然后,您可以进行自己的路径计算,例如:

代码语言:javascript
复制
    public IActionResult Index()
    {
        var myFileVirtualPath = "/ab/c.d"
        var myModel = Path.Combine(_env.ApplicationBasePath, myFileVirtualPath);
        return View(myModel);
    }
票数 0
EN

Stack Overflow用户

发布于 2019-05-06 13:22:33

@PaulWilliam‘solution 的另一种解决方案

在由于任何原因无法使用文件提供程序的情况下,可以使用System.IO.File静态类和返回DateTime obj的方法GetLastWriteTimeGetLastWriteTimeUtc来获取文件的最后修改日期:

代码语言:javascript
复制
DateTime lastModified = System.IO.File.GetLastWriteTimeUtc(filePath);

注意,非utc方法GetLastWriteTime根据服务器/文件系统时间返回最后修改的日期。

除了这些方法和所有的写读方法之外,System.IO.File还包含帮助检索数据的方法,如上次访问时间、创建时间等。不仅是getter方法,还有getter方法。

博士:文件类- MS文档

还值得指出的是,您可以使用GetAttributes/SetAttributes方法来处理用于将文件的状态定义为HiddenCompressed等的FileAttributes枚举。

博士:File.GetAttributes(字符串)方法- MS文档FileAttributes Enum - MS文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36326353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档