Java获得路径方法,文件同样性推断

 
在拓张开拓时,对文本举办上传和下载是较为常见的一举一动,为了以免在文件操作进度中,现身同样文件反复操作,须要对文件实行一样性对比:

C#文本一样性判定,

 
在拓展支付时,对文本举办上传和下载是较为布满的行事,为了防备在文件操作进程中,出现同样文件反复操作,必要对文本进行一样性比较:

    1.拿走文件的相对路线,针对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;
            }
        }

   三.透过文件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);//比较哈希码 
                }
            }
        }

  肆.测算文件的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);
                }
            }
        }

 

在举办付出时,对文件实行上传和下载是较为常见的一言一动,为了避防万壹在文书操作进度中,出现同样文件反复操作,要求…

Java获得路径方法,文件同样性推断。(1)、request.getRealPath(“/”);//不推荐使用获取工程的根路线 
(贰)、request.getRealPath(request.getRequestURI());//获取jsp的路线,那一个法子相比好用,能够直接在servlet和jsp中利用 
(3)、request.getSession().getServletContext().getRealPath(“/”);//获取工程的根路线,那几个形式相比好用,可以直接在servlet和jsp中应用 
(肆)、
this.getClass().getClassLoader().getResource(“”).getPath();//获取工程classes
下的不贰诀要,这些情势能够在任意jsp,servlet,java文件中使用,因为不论是jsp,servlet其实都以java程序,都以贰个class。所以它应有是1个通用的法子。

    1.收获文件的相对路径,针对window程序和web程序都可选拔:

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

  

一.基本概念的领会绝对路线:相对路线正是你的主页上的文书或目录在硬盘上实在的路线,(U奥迪Q7L和概略路线)比如:C:xyz est.txt
代表了test.txt文件的相对路线。
准目录的路径。包涵Web的相对路线(HTML中的相对目录),举个例子:在Servlet中,”/”代表Web应用的跟目录。和概略路线的争论表示。举个例子:”./”
代表当前目录,”../”代表上级目录。那种接近的表示,也是属于相对路线。其余关于U福特ExplorerI,U宝马X三L,U君越N等内容,请参考OdysseyFC相关文书档案规范。冠道FC
23九六: Uniform Resource Identifiers (U瑞虎I): Generic
Syntax,(
2.一劳动器端的地方服务器端的相对地址指的是相对于你的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(“.”) 
赢得的路径:C:\Java获得路径方法,文件同样性推断。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\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

  4.盘算文件的hash值 用于相比较四个文件是不是同样:

方法: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>

 


3、获得系统路径

在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项目标根目录

2.你也得以每一日在随机的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

www.5929.com,5、其他2

java得到路线二种路子- –

      壹.
jdk怎么着推断程序中的路线呢?一般在编制程序中,文件路线分为相对路线和绝对路线,相对路线是相比较好处理的,可是不灵敏,因而大家在编制程序中对文本实行操作的时候,一般都以读取文件的相对路线,

相对路线恐怕会复杂一点,不过也是相比轻便的,相对的门径,重即使相对于何人,能够是类加载器的门路,可能是近来java文件下的门道,在jsp编程中大概是周旋于站点的路径,相对于站点的路径,我们能够透过
getServletContext().getRealPath(“\”)
和request.getRealPath(“\”):那么些是获取站点的绝对路线;
而getContext帕特h():获得站点的杜撰路线;

      二.
class.getClassLoader.get帕特h():取得类加载器的路径:什么是类加载器呢?
一般类加载器有系统的和用户自个儿定义的;系统的ClassLoader正是jdk提供的,他的门路就是jdk下的门道,大概在
jsp编制程序,举个例子Tomcat
,获得的类加载器的地点就是tomaca自身规划的加载器的门路,

精通了那些之后,对于文本路线的操作就能够一定的精晓,我们在编制程序的时候,只要想清楚大家所操作的公文是周旋于怎样路径下的,获得相对路线就可以了.

6、总结

一、获取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下; 
二.xml文件放在/WEB-INF/classes目录下或classpath的jar包中; 
三.位于与分析它的java类同3个包中,不自然是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);

 

 

转载自:  
 

Leave a Comment.