总结Java文件操作

文件:文件是一个广义的概念

  • 在操作系统中文件可以指硬件资源和软件资源为文件;
  • 也可以指存储在硬盘上的文件,文件夹也是文件;文件夹是通俗的叫法,专业的叫法是目录;

查看我们的硬盘,我们可以发现文件在硬盘上的存储结构是树型的存储结构,文件夹里可以由文件夹和文件,文件夹里又可以继续嵌套文件和文件夹,不难发现是一个树型结构,n叉树;

此电脑 就是树的

路径

有这么多文件,如何去找到,确定我们要找的文件?文件系统为我们提供了 路径;路径可以分为绝对路径相对路径

  • 绝对路径:从盘符开始,一直到文件的路径就是绝对路径;
  • 相对路径:从当前的目录开始(工作目录),直到文件的路径就是相对路径;

有人要问,那为什么我们平常看到的路径为什么都是从盘符开始的,而不是此电脑开始的呢?

  • 这是因为所有的文件都是此电脑开始的,所以文件系统省略了此电脑作为路径

D:\WeChat\WeChat.exe 这就是绝对路径,从盘符开始

如果当前的路径是D:\WeChat,那么WeChat.exe 的相对路径就是 ./WeChat.exe

还有另外一种情况,我们当前进入了Wechat里的另一个文件夹,当前的目录是D:\WeChat\aaa,那我们如何确定WeChat.exe呢?  ../WeChat.exe就是了

相对路径的一些注意点:

  • 相对路径中, ..表示上一级目录,.表示当前目录;
  • 相对路径还可以是任意路径;
  • 相对路径开头的./可以去掉,但是不建议去掉;

细心的应该有看到我上面表示路径的分隔符有用到正斜杠 /反斜杠 \ ,那是因为什么呢?

  • 这就不得不说到微软在开发DOS的时候了,当时市面上主流还是Unix系统,而Unix系统就是用正斜杠来当作分隔符的,刚开始微软也是想用的,但是在发布之际就改成反斜杠,发布之后受到了很多反对,后面就改成了正反斜杆都支持,所以如今能够在微软的操作系统中正反斜杆都能够使用,当然在编写代码的时候,还是建议养成使用正斜杠的习惯,因为使用反斜杠,你还得用再加一个反斜杠,防止和其他字符变成其他转义字符。

文件的操作

文件按照不同的分类可以分为很多种类,这里主要讲跟编写代码相关的,分为文本文件二进制文件

从存储的内容来看,文本文件存的是合法的字符,而二进制文件存的可以是任何内容,像照片,视频,音乐......;

 一个最简单粗暴的分辨办法,打开记事本,讲文件拖入记事本打开,如果不是乱码,就是文本文件,如果是乱码,就是二进制文件;

这是打开一个应用程序,乱码,二进制文件;

Java操作文件使用File这个类,这个类来自  java.io包,跟io有关;下面主要分享这个包中用到的主要构造方法和方法;

构造方法
File(String pathname)
一个字符串作为路径,可以是绝对路径也可以是相对路径
File(String parent, String child) 
一个字符串作为父目录,一个字符串作为子目录,合起来是一个文件的路径
 File(File parent, String child)
一个文件变量和一个字符串合起来的一个文件路径

构造方法中最常用的第一个,最直接明了,可以是绝对路径也可以是相对路径,如果是相对路径,你要明确自己的当前目录(工作目录); 

方法
返回值的类型方法签名说明
StringgetName()返会File对象的纯文件名
StringegetParent()返回表示File对象的父目录的字符串
StringgetPath()返回表示File对象完整路劲的字符串
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象修饰过的绝对路径
 booleanexists()判断File对象是否真实存在
booleanisDirectory()判断File对象是不是一个目录
booleanisFile()判断File对象是不是一个普通文件
booleancreateNewFile()根据File对象创建一个空文件,创建成功返回true,存在返回false;
booleandelete()根据File对象删除该文件
voiddeleteOnExit()根据File对象标记该文件要删除,直到该程序结束就会删除该文件
String[]list()返回目录下所有文件的文件名
File[]listFiles()

返回该目录下的所有文件的文件名,以File对象返回

booleanmkdir()创建File对象表示的目录
booleanmkdirs()创建File对象表示的目录,即使是可能要连续创建多个目录
booleanrenameTo(File dest)根据File对象重新以dest命名,相当于创建,复制,删除为一体;
booleancanRead()判断该用户有没有可以读这个文件的权限
booleancanWrite()

判断该用户有没有可以写这个文件的权

代码演示

 打开文件

对于File对象用绝对路径来说,无论是哪种获取获取的方法,都是一样的;

当时对于用相对路径表示,就会有所不同了;

这是我当前的工作目录:

可以看到获取路径的方法返回的都是以相对路径判断的,以获取修饰过的字符串就是会把无所谓的./去掉;

值得一提的是上面的路径代表的文件无论是否真实,即使文件不存在也会根据你提供的路径返回值;

操作文件的主要方法

新建文件,删除文件,修改文件名字,查找文件.....,只是介绍我认为需要注意的,简单的不做多赘述; 

listFiles()

返回指定File文件下所有文件的文件名(完整路径),不包括目录里面的文件;像src目录里面还有很多文件;

如果File对象不存在,会报错;

createNewFile()

创建文件;

说明: 由于第三个代码报错,我重新测试了第四个代码,依旧是报一样的错误,说明创建文件不能额跨未创建的目录去创建文件;根据查看创建的文件可以看到,只能创建普通文件,不能创建文件夹,已经存在相同的文件,会返回一个false;

deleteOnExit() 

根据File对象,标注⽂件将被删除,删除动作会到JVM运⾏结束时才会进行

说明:在等待jvm结束的过程中,观察该文件依旧存在,直到jvm结束,该文件才被删除;

mkdir() 

注意:硬盘不提前创建相关的文件文件夹,除了必要用到的工作目录;

观察不难看出,mkdir最多只能创建一个目录,超过一个不会创建,且不管你的File对象的文件夹名字会不会是一个普通文件;

mkdirs()

该方法与mkdir唯一不同的就是它可以创建超过一个文件夹,还是相同代码(上面代码创建的文件已经删除)

区别一目了然,mkdirs无论需要创建多少级目录,都是能够创建成功的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a添砖Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值