存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永久的保存程序中
File类
1.1. File类说明
存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动,传送,亦可以被其他程序使用.由于数据存储在文件中,所以我们需要学习一个和文件有密切关系的类,叫做File类,将要掌握获取文件的属性以及删除和重命名文件.最终如何向文件中写入数据和从文件中读取数据。
那么File类关心的是在磁盘上文件的存储.
File类描述的是一个文件或文件夹。(文件夹也可以称为目录)
该类的出现是对文件系统的中的文件以及文件夹进行对象的封装。可以通过对象的思想来操作文件以及文件夹。
可以用面向对象的处理问题,通过该对象的方法,可以得到文件或文件夹的信息方便了对文件与文件夹的属性信息进行操作。
文件包含很多的信息:如文件名、创建修改时间、大小、可读可写属性等。
1.2. 体验File类
1 | public static void main(String[] args) { |
结论:File对象也可以表示不存在的文件。其实代表了一个抽象路径
构建一个File类的实例并不会在机器上创建一个文件。不管文件是否存在都可以创建任意文件名的File实例,可以调用File实例的exists方法判断文件或目录是否存在。
1.3. 构造一个File类实例:
首先存在/d/blog/source
1 | public static void main(String[] args) { |
创建File对象需要导包, import java.io.File
==File对象没有无参数构造,创建对象需要传参。==
1 | //标准 |
1.4.路径
路径就是文件或文件夹所在的位置。
1.4.1. 路径分割符
上下级文件夹之间使用分隔符分开:
在Windows中分隔符为\
,在Unix/Linux中分隔符为/
。
更专业的做法是使用File.separatorChar
,这个值就会根据系统得到的相应的分割符。
例:new File("c:" + File.separatorChar + "a.txt");
注意,如果是使用”\”,则需要进行转义,写为”\\”才可以,如果是两个”\”,则写为”\\\\”。
1 | public static void main(String[] args) { |
1.4.2. 绝对路径与相对路径
对于UNIX平台,绝对路径名的前缀是”/“。相对路径名没有前缀。
对于Windows平台,绝对路径名的前缀由驱动器号和一个”:”组成,例”c:\...”。相对路径没有盘符前缀。
相对路径:
相对路径是指相对于某位置的路径,是指相对于当前目录。在执行Java程序时,相对路径为执行java命令时当前所在的目录。
一般在使用时,建议用绝对路径,因为相对路径容易出问题,不好确定到底在什么地方。
1.5. File类中常用的方法:
创建
1、createNewFile()
在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
1 | public static void main(String[] args) throws IOException { |
2、mkdir()
指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
1 | public static void main(String[] args) throws IOException { |
3、mkdirs()
在指定位置创建目录,这会创建路径中所有不存在的目录。
1 | public static void main(String[] args) throws IOException { |
4、renameTo(File dest)使用说明
第一种场景:同一路径下文件重命名【文件重命名】
如果test路径下1.txt 不存在,那么返回false。
1
2
3File oldName = new File("E:\\hello\\test\\1.txt");
File newName = new File("E:\\hello\\test\\2.txt");
System.out.println(oldName.renameTo(newName));//true第二种场景:将文件从一个路径移动另一个路径下,并且移动的文件进行重命名【文件移动重命名】
E:\hello1\test1必须要存在,否则返回false 。
1
2
3File oldName = new File("E:\\hello\\test\\1.txt");
File newName = new File("E:\\hello1\\test1\\2.txt");
System.out.println(oldName.renameTo(newName));//tue第三种场景:修改文件夹的名称,文件夹里面没有文件的时候修改成功!
说明:修改文件夹名称,这个目录必须存在 E:\hello\dufy。
其中如果 E:\hello\dufy 这个目录不为空,返回false。1
2
3File oldNamed = new File("E:\\hello\\dufy");
File newNamed = new File("E:\\hello\\dufy_fly");
System.out.println(oldNamed.renameTo(newNamed)); //true
renameTo 可以重命名文件,也可以进行文件的移动操作!
删除
1 | delete() 删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。 |
判断
1 | exists() 文件或文件夹是否存在。 |
获取
1 | getName() 获取文件或文件夹的名称,不包含上级路径。 |
测试 list() 与 listFiles 的区别
1 | File file = new File("D:\\blog"); |
1 | File file = new File("D:\\blog"); |
1.6. 案例:
1、列出指定目录中所有的子文件名与所有的子目录名,要求目录名与文件名分开列出
1 | public static void main(String[] args){ |
2、列出指定目录中所有扩展名为.java的文件。
不同系统对于路径的 windows系统使用斜线作为路径分隔符 “\” linux 系统使用反斜线作为路径分隔符”/“java是跨平台的语言,java程序如果部署到linux系统上,如果程序中有File对象, 可以使用File类separatorChar (字段)
1 | public static void main(String[] args){ |
原文链接:https://blog.csdn.net/u010648555/article/details/78356040