奇怪的文件路径问题(\ \\ / //等) getAbsolutePath与getCanonicalPath
最近在研究protobuf协议生成问题,发现在生成desc文件时传递进来的路径千奇百怪,最后发现程序却能正常运行,因此写了一些测试用例,大概搞懂了为啥会有这么多奇怪的路径。
package org.example.testFileSep;import java.io.File;public class Main {public static void main(String[] args) throws Exception {File file = new File(".");String PROTO_PATH = "/log";String SERVER_PATH = "/debug.log";System.out.println(PROTO_PATH);System.out.println(SERVER_PATH);String path = file.getAbsolutePath() + PROTO_PATH + SERVER_PATH;System.out.println(path);File file2 = new File(path);System.out.println(file2.exists() + file2.getAbsolutePath());System.out.println(file2.getCanonicalPath());}
}/*
/log/
/debug.log
C:\my_work\TestJava\test_java\./log//debug.log
trueC:\my_work\TestJava\test_java\.\log\debug.log
C:\my_work\TestJava\test_java\log\debug.log*//*
/log
/debug.log
C:\my_work\TestJava\test_java\./log/debug.log
trueC:\my_work\TestJava\test_java\.\log\debug.log
C:\my_work\TestJava\test_java\log\debug.log*//*
String PROTO_PATH = "\\log";
String SERVER_PATH = "\\debug.log";\log
\debug.log
C:\my_work\TestJava\test_java\.\log\debug.log
trueC:\my_work\TestJava\test_java\.\log\debug.log
C:\my_work\TestJava\test_java\log\debug.log*/
总结:
1.不断地修改SERVER_PATH 和 PROTO_PATH,发现构造出来的路径千奇百怪,但是最终构造出来的File,发现都是存在的。其实,File内部有一定的纠错能力,如果不是标准的路径,会进行一定的处理。
2.String s = "\"; // 这种是报错的,\是特殊符号,因此需要写成 "\\"转义下才行。
3.另外就是注意:getAbsolutePath和getCannonicalPath这2个,我觉得用后者更好一点,直接把 . 和.. 这些路径给去掉转化为更加标准的路径。
奇怪的文件路径问题(\ \\ / //等) getAbsolutePath与getCanonicalPath相关推荐
- Java下的路径getPath,getAbsolutePath和getCanonicalPath
1.getPath 以构造路径作为返回值. 2.getAbsolutePath 以当前路径+构造路径作为返回值. 3.getCanonicalPath 以全路径作为返回值(如果构造路径包含.或..,会 ...
- file的getPath getAbsolutePath和getCanonicalPath的不同
file的这几个取得path的方法各有不同,下边说说详细的区别 概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以 ...
- java file类的getPath和getAbsolutePath和getCanonicalPath 的疑问与解答
先说总结 总结: getPath:返回的是构造时的参数 getAbsolutePath:返回的是文件所在目录的路径+构造时的参数 getCanonicalPath:返回的就是这个文件存储的绝对路径 学 ...
- getPath(),getAbsolutePath(),getCanonicalPath() 返回文件的路径
考虑一下几种路径: C:\temp\file.txt - 绝对路径,也是规范路径 .\file.txt - 相对路径 C:\temp\myapp\bin\..\..\file.txt 这是一个绝对路径 ...
- Java获取文件path—getPath、getAbsolutePath、getCanonicalPath区别
一.三者相同点 1.路径分隔符根据操作系统改变,Windows操作系统使用"\"分隔,Unix操作系统使用"/"分隔. 2.路径最后一个字符不为分隔符. 二.g ...
- getPath() ;getAbsolutePath();getCanonicalPath()的区别
前言: java中File类的中的三个方法的区别: getPath():getAbsolutePath():getCanonicalPath() : 1.getPath(): 返回的是定义时的路径,这 ...
- java文件操作getAbsolutePath和getCanonicalPath的区别
java文件操作getAbsolutePath和getCanonicalPath的区别 2014年11月03日 14:11:52 阅读数:2318 一般情况下,二者得到的结果是没有差异的. getCa ...
- Java中getPath,getAbsolutePath和getCanonicalPath区别
方法 说明 getPath 以构造路径作为返回值 getAbsolutePath 以当前路径+构造路径作为返回值 getCanonicalPath 以全路径作为返回值(如果构造路径包含.或-,会进行处 ...
- Java的getPath()、getAbsolutePath()、getCanonicalPath()
getAbsolutePath():返回抽象路径名的绝对路径名字符串.public static void test1(){File file1 = new File(".\\test1.t ...
最新文章
- ProtoBuf 简单测试
- Docker镜像上传至私有仓库
- 判断大小简单算法_算法浅谈——人人皆知却很多人写不对的二分法
- java web不用框架_初学javaweb,远离各自框架
- 计算机五笔教案ppt,计算机基础课件五笔打字.ppt
- jact变频器故障代码_高淳JACT变频器,艾克特变频器ERR20编码器故障维修烟台市...
- zedgraph显示最小刻度_关于ZedGraph几个难点
- 基于改进的CASA模型反演NPP
- linux yum 五笔输入法,CentOS 7 安装五笔输入法
- 如何提高BT的下载速度?
- Excel 预习阶段Day1
- 机械师f117-7p安装linux禁用触摸板问题
- ht城市介绍人口数量Html,城市人口热力图 城市热力图查询
- java菜鸟快速上手指南
- java编程将HTML文件转换成PDF文件
- ffmpeg源码分析 (二)
- 机壳地与数字地_模拟地的关系
- 第四章 网络层(TCP/IP称网际层)
- 删除U盘中的System Volume Information 文件夹的方法
- ♥二:TypeScript---变量声明