FindPath() public static method

查找指定文件
public static FindPath ( IEnumerable paths, String filename, String &fullPath ) : Int32
paths IEnumerable 检索路径
filename String 文件名 允许相对路径.路径分隔符只能使用/
fullPath String 查找结果:完整路径
return System.Int32
        /// <summary>
        /// 根据指定路径创建Template实例
        /// </summary>
        /// <param name="path">路径</param>
        /// <param name="encoding">编码</param>
        /// <returns></returns>
        public ITemplate CreateTemplate(String path, Encoding encoding)
        {
            TemplateContext ctx      = TemplateContext.CreateContext(context);
            Template        template = new Template(ctx, null);

            if (encoding != null)
            {
                template.Context.Charset = encoding;
            }
            if (!String.IsNullOrEmpty(path))
            {
                String fullPath = path;
                //判断是否本地路径的绝对形式
                if (fullPath.IndexOf(System.IO.Path.VolumeSeparatorChar) != -1 || //win下判断是否包含卷分隔符(即:) c:\user\Administrator\default.html
                    fullPath[0] == '/')                                           //liunx判断是否为/开头,/usr/share/doc/default.html  win下请不要使用/开头的路径
                {
                    ctx.CurrentPath          = System.IO.Path.GetDirectoryName(fullPath);
                    template.TemplateContent = Resources.Load(fullPath, template.Context.Charset);
                }
                else
                {
                    Int32 index = Resources.FindPath(path, out fullPath); //如果是相对路径,则进行路径搜索
                    if (Resources.FindPath(path, out fullPath) != -1)
                    {
                        //设定当前工作目录 如果模板中存在Inclub或load标签,它们的处理路径会以CurrentPath 设定的路径为基准
                        ctx.CurrentPath          = Resources.Paths[index];
                        template.TemplateContent = Resources.Load(fullPath, template.Context.Charset);
                    }
                }
            }

            return(template);
        }
Beispiel #2
0
 /// <summary>
 /// 根据文件名(允许有相对路径)查找并读取文件
 /// </summary>
 /// <param name="paths">检索目录</param>
 /// <param name="filename">文件名</param>
 /// <param name="encoding">编码</param>
 /// <param name="fullName">完整路径</param>
 /// <returns></returns>
 public static String Load(IEnumerable <String> paths, String filename, Encoding encoding, out String fullName)
 {
     if (IsLocalPath(filename))
     {
         fullName = filename;
     }
     else
     {
         Int32 index = Resources.FindPath(paths, filename, out fullName); //如果是相对路径,则进行路径搜索
         if (index == -1)
         {
             return(null);
         }
     }
     return(LoadResource(fullName, encoding));
 }