Java文件路径的坑:new File()只是纸上谈兵,没文件夹就崩了

📅 2026/7/13 4:45:17 👁️ 阅读次数 📝 编程学习
Java文件路径的坑:new File()只是纸上谈兵,没文件夹就崩了

创建一个文件对象f, 其表示路径为“D:/test/.txt”, 当执行此创建操作后, 在内存的栈空间会存在对于f的一处引用, 在堆空间则会存在一个对应于.txt这个文件格式相关的对象状况, 要留意Java这种情况。

这个对象仅仅含有文件的属性, 像是大小、是否可读、修改的时间等等, 并不包含文件的内容, 所以等于0。当咱们打算执行对文件的操作之时, 这个时候是web。

等抽象路径发挥作用之际, 就如同当咱们打算去执行f.()指令之时, 虚拟机会把抽象路径转变而成实际的物理路径, 到达这个经转化的物理路径(此刻)。

文件的建立是在硬盘之下开展的。此时, 要是在你的D盘里不存在test文件夹, 那么很不好意思, 程序将会抛出异常, 要是有test文件夹, 接着就能创建一个服务器。

有无.txt文件呢至于可不可以建.txt那是取决于此文件之上文件夹有无存在此情况也就是_抽象路径_在作祟了。

倘若要是打算让f引用于硬盘里将文件夹也构建出来该如何去做呢, 运用f.()去找出.txt之上的所有文件夹, 接着在()之中搞定即可。

File类乃是用于构造文件或者文件夹的类, 于其构造函数当中, 要求传入一种类型的参数, 此参数用以指示文件所处的路径。之前一直将绝对路径用作参jvm。

数, 实际上在这里也能够运用相对路径的方式。至于使用绝对路径, 这自不必去说, 是很轻易就能够确定文件的位置的。那么, 当运用了相对路径之后, JVM究竟是怎样去确定文件的位置的呢? 这就是函数所涉及的内容了。

依据jdk Doc所讲, 那般的绝对路径名, 是完整的路径名, 其不需要任何其他额外方面的信息, 便能够自行定位自身所表示的那个文件。与之相反, 相对路径名, 它定然必须借助且使用来自其他路径spa。

进行针对径名的信息的解释, 在默认状况之下, java.io包之中的类总是依据当前用户目录对相对路径名予以分析, 此目录是由系统属性user.dir加以指定的, 一般而言是命令行。

Java 虚拟机的调用目录.”orm

顾名思义, 相对路径是相对于某个路径而言的, 那么咱们必须弄明白究竟相对于什么路径。按照上面 jdk 文档所讲, 这个路径是“当前用户目录”, 也就是“。

Java虚拟机的那个调用目录, 进一步来讲这个路径着实是当我们调用JVM时所处的那个路径, 比如说。

假定存在一个处于d盘根目录下的java源文件.java, 其里边不存在信息, 之后让咱们进入命令行窗口, 随后运用”d:”命令切换至d盘根目录下, 然后。

采用”javac .java”这种方式去编译这个文件, 当编译不存在错误之后, 在d盘根目录那里会自动生成”.class”文件。然后咱们借助”java ”来进行运行。

咱们已经启动了一个jvm, 这个jvm是在d盘根目录下启动的, 所以在此jvm所加载的程序里, File类的相对路径便是相对这个路径的该程序, 此时就是这样的状态。

磁盘 D 的根目录是这: D:\, 与此同时, “当前用户目录”同样是 D:\, 在(“user.dir”)这儿, 系统变量“user.dir”所存放下来的亦是该值。

我不太明确你具体的意图和需求, 你提供的内容似乎不太完整且表述有些混乱。请你明确一下具体要改写的内容或者预期的改写方向, 以便我能更准确地按照要求进行改写。

始终可变的“用户目录”, 其路径跟当下启动jvm时所在路径始终全然相同, 毫无差错。

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

产生一个文件对象, 此对象关联名为“a.txt”的文件, 将其赋值给一个名为file的文件类型变量。

file.();

假定jvm于”D:\”之处开启, 那么a.txt便会于D:\a.txt生成。

此外, 这个参数还能够运用一些常常被使用的路径表示方式, 比如说”.”或者”.\”来表明当前的目录, 而这个目录实际上就是jvm启动时的路径。所以以下这段代码能够获取到当前的目。

录完整路径:

File f = new File(“.”);

= f.();

.out.();//D:\

最后要说说在中的状况:

在中启动jvm, 都是于项目根路径去做启动操作的, 就如同存在个项目, 它的名字是blog , 其完整路径是D:\work\IDE\\blog , 那么这个路径便是jvm启动操作对应的那个路径。

动路径了, 所以若是上述代码在行文中实操, 那么输出的数值将会是” D:\work\IDE\\blog.”并以句号作为终了。

中的状况.

假设是于其中开展web应用的运行操作, 在这个当口,要是我们于某一个类里运用如下这般的代码:

File f = new File(“.”);

= f.();

.out.();

那么所输出的将会是之下的bin目录 , 个人机器显示的为” D:\work//-----5.0.28\bin\.” , 通过这个可以看得出来服务器处于bin目。

对启动jvm进行录制的行为, 实际上是在bin目录下的那个“ .bat”文件里来启动jvm的。