标签:Servle 而在 替换 canonical 应该 mfile 跨平台 分隔符 需要
String path="D:\\新建文件夹\\2.png";
File file=new File(path);
System.out.println(file.exists());
String path1="D:/新建文件夹/2.png";
File file1=new File(path);
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getCanonicalPath());
具体使用中都可以达到访问路径的效果,只不过有一点小区别 正斜杠的话,一般在配置文件路径时,指向下一个路径只要使用一个 例如:"c:/a/1.txt"; 而反斜杠的话,在配置文件路径时,由于它本身在java中有特殊意义,作为转义符而存在,所以具体意义上的反斜杠要两个 例如:"c\\a\\1.txt";这里的第一个反斜杠是作为转义符存在的,第二个才是真正意义上的反斜杠
一般可以认为是"/"的作用等同于"\\" 在java中路径一般用"/" windows中的路径一般用"\" linux、unix中的路径一般用"/"
最好用“/” 因为java是跨平台的。“\”(在java代码里应该是\\)是windows环境下的路径分隔符,Linux和Unix下都是用“/”。而在windows下也能识别“/”。所以最好用“/”
//path得到的路径D:\ProgramFiles\apache\webapps\monkey\upload
String path = request.getSession().getServletContext().getRealPath("/upload/");
因为一个\代表转义字符,所以真实的路径应为D:\\ProgramFiles\\apache\\webapps\\monkey\\upload,,这个才是java能够识别的,以上的path并不能被识别会报错通过new File(path)的方法并不能正确建立文件。而使用这个真实的路径是可以的
如果需要改成反斜杠,就用以下替换path = path.replaceAll("\\\\", "/");
标签:Servle 而在 替换 canonical 应该 mfile 跨平台 分隔符 需要
原文地址:https://www.cnblogs.com/znsongshu/p/10159304.html