最近在研究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相关推荐

  1. Java下的路径getPath,getAbsolutePath和getCanonicalPath

    1.getPath 以构造路径作为返回值. 2.getAbsolutePath 以当前路径+构造路径作为返回值. 3.getCanonicalPath 以全路径作为返回值(如果构造路径包含.或..,会 ...

  2. file的getPath getAbsolutePath和getCanonicalPath的不同

    file的这几个取得path的方法各有不同,下边说说详细的区别 概念上的区别:(内容来自jdk,个人感觉这个描述信息,只能让明白的人明白,不明白的人看起来还是有点难度(特别试中文版,英文版稍好些)所以 ...

  3. java file类的getPath和getAbsolutePath和getCanonicalPath 的疑问与解答

    先说总结 总结: getPath:返回的是构造时的参数 getAbsolutePath:返回的是文件所在目录的路径+构造时的参数 getCanonicalPath:返回的就是这个文件存储的绝对路径 学 ...

  4. getPath(),getAbsolutePath(),getCanonicalPath() 返回文件的路径

    考虑一下几种路径: C:\temp\file.txt - 绝对路径,也是规范路径 .\file.txt - 相对路径 C:\temp\myapp\bin\..\..\file.txt 这是一个绝对路径 ...

  5. Java获取文件path—getPath、getAbsolutePath、getCanonicalPath区别

    一.三者相同点 1.路径分隔符根据操作系统改变,Windows操作系统使用"\"分隔,Unix操作系统使用"/"分隔. 2.路径最后一个字符不为分隔符. 二.g ...

  6. getPath() ;getAbsolutePath();getCanonicalPath()的区别

    前言: java中File类的中的三个方法的区别: getPath():getAbsolutePath():getCanonicalPath() : 1.getPath(): 返回的是定义时的路径,这 ...

  7. java文件操作getAbsolutePath和getCanonicalPath的区别

    java文件操作getAbsolutePath和getCanonicalPath的区别 2014年11月03日 14:11:52 阅读数:2318 一般情况下,二者得到的结果是没有差异的. getCa ...

  8. Java中getPath,getAbsolutePath和getCanonicalPath区别

    方法 说明 getPath 以构造路径作为返回值 getAbsolutePath 以当前路径+构造路径作为返回值 getCanonicalPath 以全路径作为返回值(如果构造路径包含.或-,会进行处 ...

  9. Java的getPath()、getAbsolutePath()、getCanonicalPath()

    getAbsolutePath():返回抽象路径名的绝对路径名字符串.public static void test1(){File file1 = new File(".\\test1.t ...

最新文章

  1. ProtoBuf 简单测试
  2. Docker镜像上传至私有仓库
  3. 判断大小简单算法_算法浅谈——人人皆知却很多人写不对的二分法
  4. java web不用框架_初学javaweb,远离各自框架
  5. 计算机五笔教案ppt,计算机基础课件五笔打字.ppt
  6. jact变频器故障代码_高淳JACT变频器,艾克特变频器ERR20编码器故障维修烟台市...
  7. zedgraph显示最小刻度_关于ZedGraph几个难点
  8. 基于改进的CASA模型反演NPP
  9. linux yum 五笔输入法,CentOS 7 安装五笔输入法
  10. 如何提高BT的下载速度?
  11. Excel 预习阶段Day1
  12. 机械师f117-7p安装linux禁用触摸板问题
  13. ht城市介绍人口数量Html,城市人口热力图 城市热力图查询
  14. java菜鸟快速上手指南
  15. java编程将HTML文件转换成PDF文件
  16. ffmpeg源码分析 (二)
  17. 机壳地与数字地_模拟地的关系
  18. 第四章 网络层(TCP/IP称网际层)
  19. 删除U盘中的System Volume Information 文件夹的方法
  20. ♥二:TypeScript---变量声明

热门文章

  1. shell学习 数组遍历
  2. BBVA利用区块链向保时捷控股提供1.5亿欧元贷款
  3. vue路由跳转以及路由传参接收
  4. 手机游戏中图片格式选择整理
  5. this.$emit
  6. Linux学习——第三部分 文件内容、搜索命令、系统信息
  7. CSAPP读书笔记与习题作业练习-第3章
  8. arm学习之环境的配置
  9. Movavi HD Video Converter for Mac (优秀的视频格式转换工具) v22.1
  10. c语言小飞机游戏如何实现敌机多个输出,飞机游戏软件:C语言应用初步感受