1. 路径问题
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的.
2. 创建目录
File file=new File("D:/input/hello.txt");
file.getParentFile().mkdir();
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(file.getAbsolutePath());
分享到:
相关推荐
- 使用相对路径创建`File`对象示例: ```java File f = new File("src/com/lavasoft/res/a.txt"); ``` 这里的路径是相对于项目的根目录而言的。 - 另一种形式: ```java File f = new File("./a.txt"); ```...
这个工具可能会接受一个参数,即要获取相对路径的文件或目录的绝对路径,然后返回相对于安装根目录的相对路径字符串。 在NSIS脚本中,我们可以这样使用`GetFileDir.exe`: ```nsis !include LogicLib.nsh Section...
可以使用相对路径来创建新目录,相对于当前工作目录。 在编写VB代码时,确保正确处理相对路径是非常重要的。如果你的程序需要在不同环境中运行,或者用户可能更改其工作目录,使用相对路径可以增加程序的适应性和...
- **链接**:在`<a>`标签中,使用相对路径创建指向其他JSP或HTML页面的链接。 - **图像引用**:在`<img>`标签的`src`属性中,使用相对路径加载图片资源。 - **样式表和脚本引用**:在`<link>`和`<script>`标签中...
相对路径是一种基于当前工作目录来指定文件位置的方法,它简化了程序的移植性和可维护性。 首先,让我们了解一下什么是相对路径。相对路径是相对于当前执行程序或者当前工作目录的路径。如果在代码中使用相对路径,...
例如,`new File("parent", "child")`会创建一个表示`parent/child`的相对路径。 4. **文件操作**:Java的`File`类提供了丰富的文件和目录操作方法,如`exists()`检查文件是否存在,`mkdirs()`创建多级目录,`...
例如,如果当前目录是"C:\Users\John\Documents",一个相对路径"subfolder\file.txt"实际上指的是"C:\Users\John\Documents\subfolder\file.txt"。 在建立数据库时,通常我们会选择一种数据库管理系统(如MySQL、...
2. 相对路径:相对于当前工作目录的路径,依赖于当前脚本的执行位置。 二、PHP中的路径处理 1. `__DIR__`魔术常量:它返回包含该文件的目录的绝对路径,可用于获取当前文件的上下文。 2. `dirname()`函数:返回路径...
本文将深入探讨如何利用ASP.NET的文件上传控件以及如何创建相对路径来存储上传的文件。 首先,我们需要了解ASP.NET的FileUpload控件。FileUpload控件是一个HTML表单元素,允许用户选择一个或多个本地文件进行上传。...
例如,如果你在项目中引用一个图片文件,相对路径可能是`images/logo.png`,这意味着从当前访问资源的路径开始查找`images`目录下的`logo.png`文件。在不同的场景中,相对路径的解释可能会有所不同。例如,如果在...
首先,创建一个`File`对象需要一个文件路径,这个路径可以是相对于应用存储空间的相对路径,也可以是系统的绝对路径。例如: ```java String filePath = "/sdcard/Download/test.txt"; // 绝对路径 File file = new...
相对路径是一种描述文件或目录位置的方式,它不包含完整的绝对路径,而是基于当前工作目录或当前执行脚本的位置来确定目标文件或目录。相对路径简化了路径的表示,尤其是在大型项目中,使得代码更具可移植性。 ...
相对路径是相对于当前工作目录的路径,而绝对路径是从根目录开始的完整路径。在服务器端,工作目录通常是Web应用的根目录,但为了防止路径问题,通常推荐使用绝对路径,尤其是在处理文件上传或读取时。 ### 注意...
- 相对路径则常用在程序内部的文件操作,如临时文件的创建、资源的查找等,因为它依赖于当前工作目录,更加灵活。 **注意点**: - 在编写代码时,应当尽量避免硬编码绝对路径,以免在不同环境下导致问题。 - 使用...
为确保安全性,推荐将工作目录设为所有文件操作的起点,避免因相对路径导致的潜在安全问题。 9. **Path类与路径处理** `System.IO.Path`类提供了一系列静态方法和属性,如上述所提及的,用于处理跨平台的路径操作...
本文主要讨论了在Log4j配置中如何处理相对路径的问题,以适应不同环境下的日志文件存储需求。 一、使用系统属性设置路径 在Log4j的配置文件(通常是`log4j.properties`)中,可以使用`${}`语法引用系统属性。例如...
- **递归创建目录**:如果要创建的目录路径中包含不存在的上级目录,如“e:\tools\subtool”,仅使用`mkdir()`可能无法成功创建最底层的“subtool”目录。这时,应使用`mkdirs()`方法,它可以递归地创建整个路径中的...
- **相对路径**:相对于当前工作目录的路径。 2. **文件路径分隔符**: - **Windows**:使用`\`作为分隔符。 - **Unix/Linux/MacOS**:使用`/`作为分隔符。 在编写跨平台代码时,推荐使用`File.separator`...