今天遇到一个极其烦躁的问题,一个jar包中的一个方法,要求函数中要求传入一个String类型的参数,用于指示文件所在的路径.但是对于我们来说完全不知道他需要的路径是绝对路径还是相对路径,所以我尝试了很多地址都宣告失败。不是报地址错误就是报文件找不到。

于是我找到了一个比较笨的办法,在你的代码前面写上如下的代码

File file = new File("a.txt");

File.createNewFile();

然后运行你的代码之后,在你的电脑上面搜索a.txt文件,然后找到之后就是需要的路径了。

很多人都说,io.file的默认路径不就是jvm所存在的路径吗,但是我们现在一般都会使用IED来办公,我使用的myeclipse就不会使用我默认装的jdk,而是使用它自己的,所以最终我找到的目录是在MyEclipse里面的,所以这个目录确实很难找。

当然这样的问题也极其的少见,只是遇到了就顺便记录一下。

下面是记录java.io.File的相对路径和绝对路径的博文,也是这篇博文带给我的灵感。

File类是用来构造文件或文件夹的类,在其构造函数中要求传入一个String类型的参数,用于指示文件所在的路径.以前一直使用绝对路径作为参数,其实这里也可以使用相对路径.使用绝对路径不用说,很容易就能定位到文件,那么使用了相对路径jvm如何定位文件的呢?

按照jdk Doc上的说法”绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。相反,相对路径名必须使用来自其他路径名的信息进行解释。默认 情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.”

相对路径顾名思义,相对于某个路径,那么究竟相对于什么路径我们必须弄明白.按照上面jdk文档上讲的这个路径是”当前用户目录”也就是”java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径.举个例子:

假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到 d盘根 目录下,然后用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也 就是相对这个路径的,即d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.

我们可以多做几次试验,把”Example.class”移动到不同路径下,同时在那些路径下,执行”java Example”命令启动jvm,我们会发现这个”当前用户目录”是不断变化的,它的路径始终和我们在哪启动jvm的路径是一致的.

搞清了这些,我们可以使用相对路径来创建文件,例如:

File file = new File(“a.txt”);

File.createNewFile();

假设jvm是在”D:\”下启动的,那么a.txt就会生成在D:\a.txt;

此外,这个参数还可以使用一些常用的路径表示方法,例如”.”或”.\”代表当前目录,这个目录也就是jvm启动路径.所以如下代码能得到当前目录完整路径:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);//D:\

最后要说说在eclipse中的情况:

Eclipse中启动jvm都是在项目根路径上启动的.比如有个项目名为blog,其完整路径为:D:\work\IDE\workspace \blog.那么这个路径就是jvm的启动路径了.所以以上代码如果在eclipse里运行,则输出结果为” D:\work\IDE\workspace\blog.”

Tomcat中的情况.

如果在tomcat中运行web应用,此时,如果我们在某个类中使用如下代码:

File f = new File(“.”);

String absolutePath = f.getAbsolutePath();

System.out.println(absolutePath);

那么输出的将是tomcat下的bin目录.我的机器就是” D:\work\server\jakarta-tomcat-5.0.28\bin\.”,由此可以看出tomcat服务器是在bin目录下启动jvm 的.其实是在bin目录下的” catalina.bat”文件中启动jvm的.

java io 文件路径格式_java中iofile的路径问题,确定一个未知方法所需要的文件路径...相关推荐

  1. java获取服务器ip地址_java中获取当前服务器的Ip地址的方法

    1.tomcat是一款免费的开源Web服务器,如果部署在本地,那么对应的那么为localhost,对应地址为127.0.0.1. 例子:可以通过http://localhost:8080/项目root ...

  2. java 世界协调时间格式_Java核心教程之常见时间日期的处理方法

    Java日期处理类Date详解 时间的基础知识 时区:整个地球分为二十四时区,每个时区都有自己的本地时间. 为了统一起见,使用一个统一的时间,称为全球标准时间(UTC,Universal Time C ...

  3. java比较字符引用地址_java中的比较运算符== 与 equals()方法

    初学JAVA的时候对这两种比较方式也有疑惑,趁着现在整理一下自己的理解. JAVA中变量分为两类,一类是值类型,它储存的是变量真正的值,比如基础数据类型,值类型储存在内存的栈中:一类是引用类型,他们储 ...

  4. java输入两个整数_Java中从键盘输入多个整数的方法

    例题:求数列的和 分别输入两个整数n,m,中间以空格隔断,n 为数列第一项,后面各项均为前一项的开根号,求前m项的和. 第一种从键盘输入并读取的方式:sc.hasNextInt() 函数和sc.nex ...

  5. java list map 去重复_Java中List集合去除重复数据的六种方法

    1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...

  6. java数组包含某个元素_java中判断数组是否包含某元素的方法

    有两种方法可以判断数组是否包含元素: 方法1, 将数组转换为list,然后使用list的contains方法来判断:Arrays.asList(...).contains(...) java.lang ...

  7. java类的无参构造函数_java中所有类都默认有一个无参构造函数吗?

    当没有定义构造方法时每个类里都有一个默认的无参的构造方法,此时该类就只有一个构造方法:而当你显示定义类的构造方法时,那就没有那个默认的构造方法了,该类所以的构造方法就是定义了的那些构造方法. 构造方法 ...

  8. 迅雷之坑:java.io.IOException: 你的主机中的软件中止了一个已建立的连接

    废话不多说,直入主题.记录的原因是: 控制台抛错,java.io.IOException: 你的主机中的软件中止了一个已建立的连接. 并不是网上说的什么tomcat超时之类的,就是请求发了两次,但是他 ...

  9. java.io.ioexception: 你,java.io.IOException: 你的主机中的软件中止了一个已建立的连接。...

    1.异常表现:我在jsp文件中有一个 表单,里面有一个保存事件按钮.保存 onclick的js函数里我是用ajax提交的数据,用于局部刷新页面. 2.问题原因:在Internet Explorer 的 ...

最新文章

  1. [欢迎加入]博客园.NET Compact Framework讨论组
  2. 计算机应用基础课程建设规划,计算机应用基础课程建设方案(6页)-原创力文档...
  3. linux下的makefile编程
  4. SAP ERP业务优化之非计划运输成本核算
  5. jzoj3771-小Z的烦恼【高精度,数学】
  6. C++中如何判断文件是否存在
  7. c\c++中比较两个字符串或string对象是否相等
  8. Linux生成ascii文件,linux下ASCII转HEX的实现
  9. idea格式化代码小技巧
  10. 初级电工实训考核柜装置
  11. Go sqlx 框架使用下划线命名法处理结构体字段
  12. java 调用 CXF 报错 java.lang.NoSuchMethodError: javax.wsdl.xml.WSDLReader.readWSDL
  13. Civil 3d 交叉口标注
  14. CF1111C Creative Snap
  15. @Cacheable使用详解
  16. ios 根据日期知道周几_iOS 获取当前日期是周几
  17. 算法分析与设计期末总结
  18. 如何能在浏览器中显示三维模型
  19. 最新最全的 layUI 框架使用教程视频教程分享
  20. steam下载地址,千万别搞错!

热门文章

  1. RecyclerView因版本问题无法加载
  2. webService 客户端调用及异常信息First Element must contain the local name, Envelope , but found definitions...
  3. 2015-05-27 用正则把oracle时间转化到mysql时间
  4. Proguard源码分析(五) ConfigurationParser.keep参数
  5. AutoScan-收集监视及办理器械
  6. QueryBuildRange中的表达式
  7. split函数python 未定义_Python字符串方法split()中的一道坑
  8. easyexcel模板循环模板怎么循环_雅思大作文怎么熟练套模板
  9. php回调函数求1+2+3+...+100的值_PHP全栈学习笔记6
  10. c语言编程单向链表排序,【分享】C语言 简单链表创建 排序 输出