`

java.io.File中的绝对路径和相对路径.

    博客分类:
  • JAVA
阅读更多

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

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

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

假设有一java源文件Example.javad盘根目录下,该文件不含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:clojure.java.io 的 JK7 java.nio.file.Path 兼容性

    依赖: [me.moocar/java.io " 0.1.0 " ]用法是 JDK7 中引入的文件路径的抽象。 这个库提供了和 Paths 之间的兼容性。 下面的示例用法( require 'me.moocar.java.io)( require '[clojure.java.io :as jio])( import ...

    Java中路径和相对路径的总结

     约定,文件或目录的路径名由斜线(/)或反斜线()分割,此外,相对路径中可以采用'.'表示当前路径,'..'表示当前路径的父路径,即上一级目录。  Java  编程时,需要注意,''后面表示的是转义字符,因此需要...

    java 读写EXEcel文档范例

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Map; import ...

    优雅的操作文件:java.nio.file 库介绍.pdf

    在早期的 Java 版本中,文件 IO 操作功能一直相对较弱,主要存在以下问题: 缺乏对现代文件系统的支持:只提供的基础的文件操作,不支持很多现代的文件系统 API 不够直观:文件操作的 API 设计相对较为复杂和冗长,...

    Java仿Windows 窗口化复制文件功能.rar

      java.io.File fileIn=new java.io.File(file1); //用路径名生成源文件   java.io.File fileOut=new java.io.File(file2); //用路径名生成目标文件   FileInputStream fin=new ...

    java压缩使用org.apache.tools.zip包解决中文文件名

    java.io.File zipfile =new java.io.File(zipf); java.io.File[] srcfile=new java.io.File[20]; //自己把要压缩的文件加进去 int m=0; //---------压缩包中文件的个数-------------- byte[] buf=new byte[1024];...

    java-io-file类笔记

    尽管java.io定义的大多数类是实行流式操作的,File类不是。它直接处理文件和文件系统。也就是说,File类没有指定信息怎样从文件读取或向文件存储;它描述了文件本身的属性。File对象用来获取或处理与磁盘文件相关的...

    java修改文件属性

    1.当Java.io中,如果文件的操作的时候,判断是否隐藏用File.ishiden() 判断是否只读,可用File.canWrite(). 2. 当要设置是否是可读或者是隐藏时,在java中除了提供File.setReadOnly()外,就无其他方法了。 所以我们...

    测试文件(java版)

    import java.io.File; class FileTest { public static void main(String[] args) { if(args.length==0){ System.out.println("运行该程序时,请输入以下格式的命令:"); System.out.println("java FileTest ...

    Java基于Spire.Cloud.SDK for Java基础上添加删除格式化Word中的图片.docx

    示例1— 添加图片到Word ...import java.io.File; public class AddImage { static String appId = "App ID"; static String appKey = "App Key"; static String baseUrl = "https://api.e-iceblue.cn";

    PDFBox-2.0.19 for .Net | c#用PDFBox解析PDF

    pdfbox for .Net目前的最新版PDFBox-...PDDocument doc = PDDocument.load(new java.io.File("文件路径")); PDFTextStripper pdfStripper = new PDFTextStripper(); string text = pdfStripper.getText(doc); 即可

    java解析给定url

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io....

    org.apache.tools.zip解决解压乱码问题

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util....

    Java™ Servlet 规范.

    2.3.1 加载和实例化 ................................................................................................................................16 2.3.2 初始化 ........................................

    利用Java代码实现无字符+中文转换为全中文的代码

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import com.vince....

    FileOutputStream将乘法口诀表写入指定文件

    //相对路径 :Java Project根目录 FileOutputStream fos = null; try { fos = new FileOutputStream(fn); for (int i = 1; i ; i++) { for (int j = 1; j ; j++) { fos.write((char) (j + 48)); fos....

    Test10.java

    import java.io.File; import java.util.Scanner; /* 删除文件夹及子文件夹所有文件 */ public class Test10 { public static void main(String[] args) { //用户输入路径 Scanner scanner = new Scanner...

    Struts2上传文件出错

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io....

    ftp4j-1.3.1下载

    可以将ftp4j嵌到你的Java应用中,来传输文件(包括上传和下载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过...

    java 文件处理代码

    import java.io.File; import java.util.Date; import java.util.Iterator; import java.util.Set; import java.util.TreeMap; public class TT { private static final long serialVersionUID = ...

Global site tag (gtag.js) - Google Analytics