您的位置 首页 java

Java IO的练习碎片:)

我以为的 getAbsolutePath

可以拿着任意的文件名,得到这个文件在系统的绝对路径:

  • 新建 File 对象
  • 然后打印 这个 File 对象的 getAbsolutePath() 方法:
 public  static   void  main(String[] args) {
    //硬盘里真实存在的 位置:/Users/fang/Downloads/Eboss/论文/论文选题?.xlsx
    File src = new File("论文选题?.xlsx");
    System.out.println(src.getAbsolutePath());
    System.out.println(src.getAbsoluteFile());
}
复制代码  

运行结果如下:

再看看这个 getAbsolutePath() 方法的源码:

这要是能打对就怪了。打出来的是工程的绝对路径。

用 user.dir 也可以打印出来当前工程的路径:

这个例子也说明了,构建文件的时候,相对于的目录一般是工程目录。

真要跨平台的话 path 应如何写?

我们知道,path 假如不变,那么一般就写死就好了。比如前文里,在 Mac 环境中,鼠标选中某个文件,然后 option+command+C就可以实现拷贝文件的绝对路径:

这就比较好,因为直接粘出来就是 / 来分割文件目录的。这种分割方式是跨平台也不会出错的。

有的平台,比如在 Windows 下的 eclipse 里面,粘贴一个目录出去就是:\\ 分割的。那这个目录在 Mac 电脑上跑就会报错。

那么还有一种方法,也可以跨平台不出错。用字符串拼接这个分隔符(File.separator):

File.separator + “Users” + File.separator + “fang” +…File.separator + “论文选题?.xlsx”

【举这个例子不是很合适,因为我这里的文件本来就只在我的本地电脑,跨平台跑肯定找不到。但是项目里会用到,所以先学习一波。有高手路过,还请多多指教!】

File.separator 在不同的系统下运行结果就不一样。

pathSeparator 是什么意思

这个真的很不好理解。直到我回忆起 Windows 系统里配置 环境变量 的情形,在 CLASSPATH 那里,有好多个软件的绝对路径,当他们都在输入框里的时候,就是用 ; 分割的。

Mac 的话,来打印看看:

就是说 pathSeparator 是用来分割一堆绝对路径用的分隔符。

(我觉得我这样讲比 源码 里说的明白多了==)

文章来源:智云一二三科技

文章标题:Java IO的练习碎片:)

文章地址:https://www.zhihuclub.com/191263.shtml

关于作者: 智云科技

热门文章

网站地图