欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

.Net Framework和.Net Core 如何读取本地文件

程序员文章站 2024-01-21 20:33:34
...

前言

最近学习.Net Core 发现读取本地配置文件 和之前的Framework的方式不一样了,所以发表一篇文章记录一下,百度有找一些资料 但是怎么说呢,好像都是各玩各的(手动笑哭),所以我弄清楚这两者的区别后,整理了一下 当成一篇文章,要是有什么说的不对的地方,欢迎大家留言评论,我好进行修改,咱们能不耽误别人就不要耽误别人了。

Framework中的使用

先展示代码:


        /// <summary>
        /// 获得当前绝对路径
        /// </summary>
        /// <param name="strPath">指定的路径</param>
        /// <returns>绝对路径</returns>
        public static string GetMapPath(string strPath)
        {
            //区分判断是否是网络路径
            if (strPath.ToLower().StartsWith("http://")|| strPath.ToLower().StartsWith("https://"))
            {
                return strPath;
            }
            //web程序引用
            if (HttpContext.Current != null)
            {
                //当前浏览器有连接状态,直接获取网站根目录  
                //很多朋友可能用的比较多的是Server.MapPath()这种方式
                return HttpContext.Current.Server.MapPath(strPath);
            }
            else //非web程序引用
            {
                strPath = strPath.Replace("/", "\\");
                if (strPath.StartsWith("\\"))
                {
                    //注意路径格式一定要全部转换  例子:F:\\web\\root\\update 或者 F:\\web\\root\\update\\test.img这种格式
                    strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
                }
                return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
            }
        }

上面的获取文件的绝对路径应该比较熟悉 ,用到多的地方的话就可以理解。

Core中的使用


		/// <summary>
        /// 获得当前绝对路径
        /// </summary>
        /// <param name="strPath">指定的路径</param>
        /// <returns>绝对路径</returns>
        public static string GetMapPath(string strPath)
        {
            strPath = strPath.Replace("/", "\\");
            if (strPath.StartsWith("\\"))
            {
                    //注意路径格式一定要全部转换  例子:F:\\web\\root\\update 或者 F:\\web\\root\\update\\test.img这种格式
                strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
            }
            return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
        }

注意区分,在 .Net Core中是没有HttpContext.Current 这个概念了,Core的概念调整成了模块化处理了,需要什么的时候添加什么模块。

扩展(校验文件夹是否存在)

			//这个是属于IO操作,倒是不区分Framework还是Core都是一样的
			//需要引用 using System.IO;
 			//如果目录不存在则创建该目录
            if (!IsExistDirectory(directoryPath))
            {
                Directory.CreateDirectory(directoryPath);
            }
            

尾语

注意两种方式都有用到 System.IO.Path这个类处理,说明这个是底层,可以直接使用。
这样我们可以获取到对应的文件所在的绝对路径 之后,咱们可以自定义读取文件的内容信息。可以达到服务器上缓存一些配置,或者数据信息,调用的时候检查是否存在缓存,或者文件,减少数据库访问(手动机智)