导航:首页 > 文件目录 > java以绝对路径生成文件

java以绝对路径生成文件

发布时间:2024-12-03 16:02:31

1. java中用父路径和子路径创建file对象有什么用呢

是相对路径和绝对路径的问题
在Java中用File对象来创建文件时,绝对路径一般是不会出现什么问题的,如果使用相对路径,则有可能出现意向不到的问题,以下主要是针对相对路径进行解释

1、Eclipse下的Java Project环境

目录结构如下所示:

JavaTest

src

com.ccse.TestDemo.java

resource

text.txt

String filepath = "resource/train.txt";

File file = new File(filepath);

注意:filepath变量的内容

在此,java.io默认情况下用当前目录来分析相对路径名,定位到当前用户目录下("user.dir"),即工程目录d:\JavaTest下,因此此时的相对路径(以当前用户目录为基础)为"resource/train.txt",这样JVM就根据用户当前目录(user.dir) 和"resource/train.txt"得到完整路径,即绝对路径,从而找到相应的文件,需要注意的是相对路径的起始处无斜杠“/”,比如上面的filepath。

2. 还没搞懂Java中的路径看完这篇文章你就全懂了

之前对于Java中的路径一直感到模糊不清,虽然知道一些,但实际操作时还是会遇到很多问题。每次遇到FileNotFound错误时,都会去搜索解决方案,比如相对路径是从哪里开始的,如何使用某个方法等。其实这就是一种盲目的编程方式。这次我决心一次性搞懂Java中的路径问题,以便在未来的编程中更加得心应手。

「绝对路径:」绝对路径的英文全称是Absolute Path,指的是真实的路径,是计算机中的完整路径,必须准确无误。它以系统的根目录为起点,即各个盘符。

「相对路径:」相对路径是相对于目标文件位置的路径。但相对路径的相对性很重要,它可以是项目的根目录或classpath目录。下面通过一个例子来说明绝对路径和相对路径的区别。

假设JavaIO模块下的resource目录下的a.txt文件,它的绝对路径和相对路径如下:

「绝对路径:」D:\code\River\JavaSE\javaIO\src\main\resources\a.txt

「相对路径:」相对于项目的根路径是:classpath(也就是「target/classes」)

在project中,相对路径的根目录是project的根文件夹。创建文件的写法如下:

「相对路径:」D:\code\River\JavaSE(也就是工程的相对路径),注意路径不能以"/"开头

「绝对路径:」

在Java开发中,我们经常需要获取文件内容。通常使用File类来获取,例如:获取“c:\文件.txt”时,我们需要创建一个File对象:File file = new File("c:\文件.txt")。然后使用file类创建一个文件输入流:FileInputStream in = new FileInputStream(file),再使用该输入流进行操作。但这样有一个缺点,就是文件路径是硬编码的形式,在Java编码过程中我们不推荐这种写法。

当然,在web项目中,我们可以通过application对象的getRealPath(“文件名”)方式获取文件的绝对路径,但这也不是很推荐。因此,我们可以使用class.getResource(path)和class.getClassLoader(path)方法来获取文件资源。下面我们来研究一下两者的区别:

4.1 class.getResource(path)

其中的参数path有两种形式,一种是以“/”开头的,另一种是不以"/"开头。

输出的结果为:

假设现在的项目结构如下所示,针对下面的三种情况如何获取:

获取上图所示的三种文件的方法:

输出的结果为:

class.getResource()和class.getResourceAsStream()方式的使用在路径上是一致的。

4.2 Class.getClassLoader().getResource(String path)

该方法中的参数path不能以“/”开头,path表示的是从classpath下获取资源的。

输出结果:

五、总结

3. java中获取文件路径的几种方式

File的getPath方法得到相对路径 getAbsolutePath方法得到绝对路径

举个例子
String fileName = "yourfile.txt";

File aFile = new File(fileName);//这里可以把路径拼在fileName前面 可以用相对路径 也可以用绝对 注意分隔符
System.out.println(aFile.getPath()); //相对路径
System.out.println(aFile.getAbsolutePath()); //绝对路径

具体的东西在这里 http://teamojiao.iteye.com/blog/446615

4. java里绝对路径和相对路径的区别

按照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以绝对路径生成文件相关的资料

热点内容
认识文件结构图片 浏览:802
在美国买的iphone6在中国能用吗 浏览:284
荣耀手环3升级失败 浏览:965
db2数据库的备份与恢复 浏览:686
哪个数据恢复大师是免费的 浏览:397
linux搭建网盘服务器 浏览:938
linux文件数打开数 浏览:754
ps如何去网站的水印 浏览:39
watch如何关闭数据用户体验计划 浏览:177
fastjson首字母大写 浏览:749
图样及技术文件完整性 浏览:624
编程用什么练速度 浏览:285
破戒僧六职业传奇版本 浏览:828
linuxepoll并发 浏览:382
caxa版本高了打不开 浏览:928
数控铣床编程是什么等级 浏览:306
讯飞语记导出的文件在哪里 浏览:408
合租房子去哪个网站好 浏览:658
网站发文章频率多少 浏览:725
帮我洗车app是什么 浏览:763

友情链接