java实现文件及文件夹的拷贝之------文件的路径书写问题

问题引入

最近学习的IO相关问题中几乎都会涉及到关于文件的定义,定义一个新的文件的格式一般为:

File f1 = new File("…(文件的路径)");

其中,文件的路径在书写时如果书写不正确,运行时就会引起一系列异常,如系统找不到文件所在的位置。

在这里插入图片描述

一开始以为路径是可以随意写的,导致总会出现这样的问题……

关于文件的两种路径

1.绝对路径
绝对路径指的是文件在硬盘上真正的路径。 在书写时,绝对路径指从盘符开始的路径,形如
“C:\windows\system32\cmd.exe” 的路径。

举个例子:
你的abc.txt是存放在 ” c:/文件夹1/文件夹2/abc.txt “下的,那么 ” c:/文件夹1/文件夹2/abc.txt” 就是abc.txt的绝对路径 。 (完整的路径地址)

2.相对路径
所谓相对路径,就是相对于自己的目标文件位置。
是指从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入“system32\cmd.exe”。

关于文件定义时路径的书写

定义一个新的文件时,对于一个已经存在的文件,在写它的路径时候,可以写它的相对路径或者绝对路径,对于绝对路径,直接从根盘符写到底即可,除了路径有点长……一般是不会出问题的。

但是对于相对路径,有一个细节是需要注意的。
如下图:
在这里插入图片描述
举个栗子:
比如拿这个工程下的三个文件(文件夹)来说,“03.jpg”,“hahas”,“IMG01.JPG”,
这三个文件(文件夹)虽然都在这个工程下面,但是存放的具体位置!是有区别的。在写它们的相对路径时,就是相对于当前所在项目的位置,也就是在书写时可以将当前的位置“C:/Users/11310/io”省略掉,其他的要全部写出哦。
对于“03.jpg”,它在当前项目下的src文件夹下的“iostudy”包下,所以相对路径为“src/iostudy/03.jpg”。所以!在写相对路径时不能写成“iostudy/03.jpg”或者“src/03.jpg”。
对于“hahas”,这是一个文件夹,它直接存放于这个项目下面,所以相对路径也就是它的文件夹名称本身了。
对于“IMG01.JPG”,它在该项目下的src包下面,所以相对路径为“src/IMG01.JPG”。不能直接写它的图片名称,否则系统将找不到它。
同时,在写相对路径的时候,也不能加上之前的“C:/Users/11310/io”中的任何一项,因为系统在寻找指定文件或者文件夹时,如果是相对路径,系统会默认在你写的路径前面加上“User.dir”,即:用户的当前工作目录,如果你自己加上前面的某一项,必定会出错哦。

关于文件拷贝时拷贝文件路径以及名称的书写

文件路径

在实现文件的copy时,在主方法中往往要定义两个新的文件,一个是被copy的原文件,一个是新的目标文件,定义新的文件时,书写文件的路径同样也是两种方法。

1.绝对路径
你可以将目标文件的绝对路径直接写出。
2.相对路径
如果写的是相对路径,和上面强调的细节问题一样,不能出现当前所在位置之前的文件夹名。
很多情况下对于目标文件,只写一个文件或者文件夹的名称,默认生成在该项目下,原理就是将目标文件生成在User.dir+目标文件名称 的位置下。

文件名称

然后就是文件的名称,也有一个细节。

由于要拷贝的文件类型有很多种,比如txt文件,java源文件,jpg格式或者png格式的图片文件,都可以进行拷贝。

文件的类型不同,其文件名称后面的后缀也就不同,所以,最好的习惯就是,在目标文件中的文件名称后面加上要拷贝的文件类型的相应后缀。
在这里插入图片描述

原文件是一个jpg格式的图片,那么目标文件也最好写为jpg文件。emmmmmmm不过如果你实在闲的无聊,写成png的后缀也行。
在这里插入图片描述在这里插入图片描述

但是!如果你只写一个文件名称不加任何后缀,就会产生一个什么都不是的文件,你也就没办法拷贝到自己想要的图片了哦。
在这里插入图片描述在这里插入图片描述
所以说,一定要有好的习惯!!记得加上后缀!!
特别地,对于非图片类的文件,如果不加后缀,系统会默认copy成一个txt文件哦。

比如:
在这里插入图片描述
在这里插入图片描述
一个java源文件,如果目标文件不加后缀,系统就会将原文件中的代码copy到一个txt文件中……

总结

总之就是,一定要有好的习惯,最好在文件名后加想要转成的文件格式的后缀,避免不必要的错误发生。
并且!书写相对路径时也要注意之前提到的细节。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值