文本同样性判别,Java得到路线方法

 
在拓展支付时,对文本举行上传和下载是相比布满的一言一行,为了以免在文书操作进度中,出现雷同文件反复操作,要求对文件进行一样性相比较:

C#文本同样性推断,

 
在张开销付时,对文件进行上传和下载是较为常见的作为,为了防御在文件操作进度中,出现一样文件反复操作,必要对文本实行一样性相比:

    一.取得文件的相对路线,针对window程序和web程序都可使用:

  

 /// <summary>
        /// 获取文件的绝对路径,针对window程序和web程序都可使用
        /// </summary>
        /// <param name="relativePath">相对路径地址</param>
        /// <returns>绝对路径地址</returns>
        public static string GetAbsolutePath(string relativePath)
        {
            if (string.IsNullOrEmpty(relativePath))
            {
                throw new ArgumentNullException("参数relativePath空异常!");
            }
            relativePath = relativePath.Replace("/", "\\");
            if (relativePath[0] == '\\')
            {
                relativePath=relativePath.Remove(0, 1);
            }
            //判断是Web程序还是window程序
            if (HttpContext.Current != null)
            {
                return Path.Combine(HttpRuntime.AppDomainAppPath, relativePath);
            }
            else
            {
                return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath);
            }
        }

   二.获取文件的相对路线,针对window程序和web程序都可选用:

   

 /// <summary>
        /// 获取文件的绝对路径,针对window程序和web程序都可使用
        /// </summary>
        /// <param name="relativePath">相对路径地址</param>
        /// <returns>绝对路径地址</returns>
        public static string GetRootPath()
        {
            //判断是Web程序还是window程序
            if (HttpContext.Current != null)
            {
                return HttpRuntime.AppDomainAppPath;
            }
            else
            {
                return AppDomain.CurrentDomain.BaseDirectory;
            }
        }

   3.因此文件Hash 比较多个公文内容是或不是同样:

    

  /// <summary>
        /// 通过文件Hash 比较两个文件内容是否相同
        /// </summary>
        /// <param name="filePath1">文件1地址</param>
        /// <param name="filePath2">文件2地址</param>
        /// <returns></returns>
        public static bool isValidFileContent(string filePath1, string filePath2)
        {
            //创建一个哈希算法对象 
            using (HashAlgorithm hash = HashAlgorithm.Create())
            {
                using (FileStream file1 = new FileStream(filePath1, FileMode.Open), file2 = new FileStream(filePath2, FileMode.Open))
                {
                    byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根据文本得到哈希码的字节数组 
                    byte[] hashByte2 = hash.ComputeHash(file2);
                    string str1 = BitConverter.ToString(hashByte1);//将字节数组装换为字符串 
                    string str2 = BitConverter.ToString(hashByte2);
                    return (str1 == str2);//比较哈希码 
                }
            }
        }

  4.估测计算文件的hash值 用于比较五个文件是还是不是一样:

  

 /// <summary>
        /// 计算文件的hash值 用于比较两个文件是否相同
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>文件hash值</returns>
        public static string GetFileHash(string filePath)
        {
            //创建一个哈希算法对象 
            using (HashAlgorithm hash = HashAlgorithm.Create())
            {
                using (FileStream file = new FileStream(filePath, FileMode.Open))
                {
                    //哈希算法根据文本得到哈希码的字节数组 
                    byte[] hashByte= hash.ComputeHash(file);
                    //将字节数组装换为字符串  
                    return BitConverter.ToString(hashByte);
                }
            }
        }

 

在拓展付出时,对文件举行上传和下载是较为广阔的一坐一起,为了防止万一在文书操作过程中,出现一样文件反复操作,供给…

(1)、request.getReal帕特h(“/”);//不推荐应用获取工程的根路线 
(2)、request.getRealPath(request.getRequestULacrosseI());//获取jsp的门路,那几个点子相比好用,能够直接在servlet和jsp中运用 
(三)、request.getSession().getServletContext().getRealPath(“/”);//获取工程的根路线,那个法子比较好用,能够直接在servlet和jsp中选择 
(四)、
this.getClass().getClassLoader().getResource(“”).getPath();//获取工程classes
下的路线,这么些法子能够在任性jsp,servlet,java文件中利用,因为不论是jsp,servlet其实都以java程序,都是三个class。所以它应有是二个通用的点子。

    壹.拿走文件的相对路线,针对window程序和web程序都可利用:

0、关于相对路线和绝对路线

  

1.基本概念的明亮绝对路线:相对路线正是您的主页上的公文或目录在硬盘上实在的门路,(UCRUISERL和概况路线)举个例子:C:xyz est.txt
代表了test.txt文件的相对路线。
准目录的不二秘诀。包蕴Web的绝对路线(HTML中的相对目录),举例:在Servlet中,”/”代表Web应用的跟目录。和大要路线的相对表示。举例:”./”
代表当前目录,”../”代表上级目录。那种近乎的意味,也是属于相对路线。别的关于U汉兰达I,U翼虎L,UCRUISERN等剧情,请参考PRADOFC相关文书档案典型。瑞虎FC
23玖陆: Uniform Resource Identifiers (U奥迪Q5I): Generic
Syntax,(
贰.一劳动器端的地址服务器端的相对地址指的是相对于您的web应用的地点,这一个地点是在劳动器端解析的(不相同于html和javascript中的相对地址,他们是由客户端浏览器解析的)

 /// <summary>
        /// 获取文件的绝对路径,针对window程序和web程序都可使用
        /// </summary>
        /// <param name="relativePath">相对路径地址</param>
        /// <returns>绝对路径地址</returns>
        public static string GetAbsolutePath(string relativePath)
        {
            if (string.IsNullOrEmpty(relativePath))
            {
                throw new ArgumentNullException("参数relativePath空异常!");
            }
            relativePath = relativePath.Replace("/", "\\");
            if (relativePath[0] == '\\')
            {
                relativePath=relativePath.Remove(0, 1);
            }
            //判断是Web程序还是window程序
            if (HttpContext.Current != null)
            {
                return Path.Combine(HttpRuntime.AppDomainAppPath, relativePath);
            }
            else
            {
                return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, relativePath);
            }
        }

1、request.getRealPath

   二.获得文件的相对路线,针对window程序和web程序都可利用:

方法:request.getRealPath(“/”) 
获得的路线:C:\Program Files\Apache Software Foundation\Tomcat
5.5\webapps\strutsTest\

   

方法:request.getRealPath(“.”) 
赢得的不2诀要:C:\Program Files\Apache Software Foundation\Tomcat
5.5\webapps\strutsTest\.

 /// <summary>
        /// 获取文件的绝对路径,针对window程序和web程序都可使用
        /// </summary>
        /// <param name="relativePath">相对路径地址</param>
        /// <returns>绝对路径地址</returns>
        public static string GetRootPath()
        {
            //判断是Web程序还是window程序
            if (HttpContext.Current != null)
            {
                return HttpRuntime.AppDomainAppPath;
            }
            else
            {
                return AppDomain.CurrentDomain.BaseDirectory;
            }
        }

方法:request.getRealPath(“”) 
收获的路径:C:\Program Files\Apache Software Foundation\Tomcat
5.5\webapps\strutsTest

   三.由此文件Hash 相比较多少个公文内容是还是不是同样:

request.getRealPath(“web.xml”) 
C:\Program Files\Apache Software Foundation\文本同样性判别,Java得到路线方法。Tomcat
5.5\webapps\strutsTest\web.xml

    

2、request.getParameter(“”); 
    ActionForm.getMyFile();

  /// <summary>
        /// 通过文件Hash 比较两个文件内容是否相同
        /// </summary>
        /// <param name="filePath1">文件1地址</param>
        /// <param name="filePath2">文件2地址</param>
        /// <returns></returns>
        public static bool isValidFileContent(string filePath1, string filePath2)
        {
            //创建一个哈希算法对象 
            using (HashAlgorithm hash = HashAlgorithm.Create())
            {
                using (FileStream file1 = new FileStream(filePath1, FileMode.Open), file2 = new FileStream(filePath2, FileMode.Open))
                {
                    byte[] hashByte1 = hash.ComputeHash(file1);//哈希算法根据文本得到哈希码的字节数组 
                    byte[] hashByte2 = hash.ComputeHash(file2);
                    string str1 = BitConverter.ToString(hashByte1);//将字节数组装换为字符串 
                    string str2 = BitConverter.ToString(hashByte2);
                    return (str1 == str2);//比较哈希码 
                }
            }
        }

方法:String filepath = request.getParameter(“myFile”); 
获取的路子:D:\VSS安装目录\users.txt

  四.企图文件的hash值 用于相比四个文件是不是1致:

方法:String filepath = ActionForm.getMyFile(); 
收获的路径:D:\VSS安装目录\users.txt

  

————————————————– 
strutsTest 为工程名

 /// <summary>
        /// 计算文件的hash值 用于比较两个文件是否相同
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <returns>文件hash值</returns>
        public static string GetFileHash(string filePath)
        {
            //创建一个哈希算法对象 
            using (HashAlgorithm hash = HashAlgorithm.Create())
            {
                using (FileStream file = new FileStream(filePath, FileMode.Open))
                {
                    //哈希算法根据文本得到哈希码的字节数组 
                    byte[] hashByte= hash.ComputeHash(file);
                    //将字节数组装换为字符串  
                    return BitConverter.ToString(hashByte);
                }
            }
        }

myFile 在ActionForm中,为private String myFile; 
在jsp页面中:为<html:file property=”myFile”></html:file>

 


三、获得系统路线

在Application中: 
System.getProperty(“user.dir”)

在Servlet中: 
ServletContext servletContext = config.getServletContext(); 
String rootPath = servletContext.getRealPath(“/”);

在jsp中: 
application.getRealPath(“”)

4、其他1

1.可以在servlet的init方法里

String path = getServletContext().getRealPath(“/”);

那将得到web项目标全路线

例如 :E:\eclipseM9\workspace\tree\

tree是作者web项目标根目录

二.您也足以随时在放4的class里调用

this.getClass().getClassLoader().getResource(“”).getPath();

那将得到 到classes目录的全路线

例如 : /D:/workspace/strutsTest/WebRoot/WEB-INF/classes/

还有 this.getClass().getResource(“”).getPath().toString();

那将收获 到 /D:/workspace/strutsTest/WebRoot/WEB-INF/classes/bl/

其一法子也足以不在web蒙受里规定路线,相比好用

3.request.getContextPath();

获取web根的上下文意况

如 /tree

tree是我的web项目的root context

5、其他2

java获得路线二种门路- –

      一.
jdk如何决断程序中的路线呢?一般在编制程序中,文件路线分为相对路径和相对路线,相对路线是相比好处理的,不过不灵敏,由此大家在编制程序中对文件实行操作的时候,一般都以读取文件的相对路线,

相对路线大概会复杂一点,可是也是比较简单的,相对的门路,首假设相对于何人,能够是类加载器的不二等秘书诀,大概是当前
java文件下的渠道,在jsp编制程序中可能是相对于站点的路线,相对于站点的路线,大家能够透过
getServletContext().getRealPath(“\”)
和request.getRealPath(“\”):这一个是获得站点的相对路线;
而getContextPath():获得站点的虚拟路线;

      2.
class.getClassLoader.getPath():赚取类加载器的门道:什么是类加载器呢?
一般类加载器有类别的和用户本人定义的;系统的ClassLoader正是jdk提供的,他的不贰诀窍便是jdk下的不二等秘书诀,或许在
jsp编制程序,比方汤姆cat
,获得的类加载器的职位正是tomaca本人规划的加载器的路线,

知晓了这几个之后,对于文本路线的操作就能一定的知晓,我们在编制程序的时候,只要想了解我们所操作的文书是相持于怎么样路径下的,获得相对路径就能够了.

6、总结

1、获取web服务器下的文书路线 
request.getRealPath(“/”) 
application.getRealPath(“”)【jsp中 】 
ServletContext().getRealPath(“”)

System.getProperty(“user.dir”)【不一致职位调用,获取的门路是动态变化的】

二、获取本地路线

jsp中,<html:file property=”myFile”/>

request.getParameter(“myFile”); 
ActionForm.getMyFile(); 
美高梅开户网址,获得的值同样:如D:\VSS安装目录\users.txt

*********************************

this.getClass().getClassLoader().getResource(“”).getPath(); 
==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/ 
this.getClass().getResource(“”).getPath().toString(); 
==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/bl/

叁、获取相对路线

request.getContextPath();

如:/strutsTest

 

 

java使用相对路线读取xml文件

博客分类:

  • java

javaXMLJavaWeb 

一、xml文件一般的存放地方有多少个: 
1.放在WEB-INF下; 
2.xml文件放在/WEB-INF/classes目录下或classpath的jar包中; 
三.身处与分析它的java类同一个包中,不自然是classpath; 

贰、相呼应的二种选用相对路线的读取方法: 

方法一:(未验证) 
将xml文件放在WEB-INF目录下,然后 
程序代码: 
InputStream is=getServletContext().getResourceAsStream(
“/WEB-INF/xmlfile.xml” ); 

办法二:将xml文件放在/WEB-INF/classes目录下或classpath的jar包中,则能够动用ClassLoader的静态方法getSystemResourceAsStream(String
s)读取; 
程序代码: 
String s_xmlpath=”com\xml\hotspot.xml”; 
InputStream in=ClassLoader.getSystemResourceAsStream(s_xmlpath); 

办法三:xml在率性有个别包路线下: 
String s_xmlpath=”com\xml\hotspot.xml”; 
ClassLoader classLoader=HotspotXmlParser.class.getClassLoader(); 
InputStream in=classLoader.getResourceAsStream(s_xmlpath);

 

 

转载自:  
 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图