要学习的流
操作文件或者目录属性
程序的任务就是对数据的操作,我们编写完程序后,下次再使用的时候,希望数据是是上次结束时的数据,除了将数据保存到数据库中 ,我们还可以将数据保存在文件之中。文件呢就是指相关记录或者放在一起的数据的集合。目前我们的文件的类型有很多,常见的有TXT、doc、xls、jpg、java、class等。
使用file操作文件或者目录属性
对文件我们首先要学会如何使用File类操作文件或者目录。
File对象既可以表示文件,也可表示目录。在程序中一个File对象可以表示一个文件和目录。利用它可以用来对文或目录进行基本操作。它可以查出与文件相关的信息,如名称,最后修改的日期、文件的大小。
创建文件的语法如下:
File file=new File(String PathName)
其中pathName表示所指向的文件路径名。
例如 File file=new File(“C:\\test.txt”)
;创建一个指向c盘根目录下test.txt本文文件的对象。
要注意的是 在Windows系统中,文件路径名中的分隔符可以使用正斜杠“/”如“C:/test.txt”也可是使用反斜杠,但是要注意的是必须写成两个“\”这样。其中第一个是反义字符。
File类的常用方法
方法名称 | 说明 |
---|---|
exists() | 判断文件或者目录是否存在 |
isFile() | 判断是否是文件 |
isDirectory | 判读是否是目录 |
getPath() | 返回相对路径 |
getAbsolutePath() | 返回文件的绝对路径 |
getName() | 返回文件或者目录的名称 |
dele() | 删除此对象指定的文件或名称 |
createNewFile() | 创建名称为空文件,不创建文件夹 |
length() | 返回文件的长度,单位为字节,如文件不存在则返回ol |
对文件的时候,我们可以使用下面四种的方法,
File file = new File("admin1.txt");
System.out.println(file);
File file2 = new File(
"C:\\Users\\Song\\Workspaces\\MyEclipse 10\\Day0618\\admin.txt");
System.out.println(file2);
File file3 = new File("C:\\Users\\Song\\Workspaces\\MyEclipse 10\\Day0618","admin.txt");
System.out.println(file3);
File file4 = new File(new File("C:\\Users\\Song\\Workspaces\\MyEclipse 10\\Day0618"),"admin.txt");
System.out.println(file4);
我们要注意后面这两种方式,这两种方式配合一些简单的算法,能很好的实现对文件的操作。
结果图:
admin1.txt
C:\Users\Song\Workspaces\MyEclipse 10\Day0618\admin.txt
C:\Users\Song\Workspaces\MyEclipse 10\Day0618\admin.txt
C:\Users\Song\Workspaces\MyEclipse 10\Day0618\admin.txt
其他的的方法测试:
// 获取绝对路径。。
File absoluteFile = file.getAbsoluteFile();
System.out.println(absoluteFile);
// 相对路径(如果传的是绝对,则读出的也是绝对)
String path = file2.getPath();
System.out.println(path);
// 获取文件的名称
// file.getName();
String name = file.getName();
System.out.println(name);
//getParent 获取文件的父类路径
// 绝对可以使用,相对不可以使用
String parent = file.getParent();
System.out.println(parent);
// 长度 length
// file.length();
long length = file.length();
System.out.println(length);
补充一个方法:
最近修改的时间
// file.lastModified();
long lastModified = file.lastModified();
System.out.println(new Date(lastModified));
结果:
Thu Jun 18 21:58:09 CST 2020
list方法:
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果此抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
String[] list = file.list();
for (String string : list){
System.out.println(string);
}
listFiles方法:
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
如果此抽象路径名不表示一个目录,那么此方法将返回 null。否则返回一个 File 对象数组,每个数组元素对应目录中的每个文件或目录。
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
}
renameTo方法:
重新命名此抽象路径名表示的文件,
renameto 把源文件复制到指定的路径,并更改文件名。删除了源文件。如果呢目标文件存在,则不能进行renameTo,结果会返回Fasle。
File file2 = new File("admin.txt");
File file3 = new File("C:\\Users\\admin_copy.txt");
boolean renameTo = file2.renameTo(file3);
System.out.println(renameTo);
mkdir方法:
创建此抽象路径名指定的目录。
返回:当且仅当已创建目录时,返回 true;否则返回 false
//mkdir 创建文件目录,如果存在就不创建,如果不存在,目标文件目录上一级是否存在,
// 如果上级存在,则创建成功,如果不存在,则创建失败
File file=new File("hello.txt");
boolean mkdir = file.mkdir();
System.out.println(mkdir);
mkdirs 创建文件目录,如果存在就不创建,如果不存在,不在乎后面是什么样子,直接创建。
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录
File file=new File("c://c1/c11/c111/c1111");
boolean mkdirs = file.mkdirs();
System.out.println(mkdirs);
做一个练习,读取一个文件夹中的后缀是.jpg的文件,还有文件中的.jpg的。
File file=new File("C:\\iotest\\img");
String[] list = file.list();
for(String str:list) {
if(str.endsWith(".jpg")) {
System.out.println(str);
}
}
printJpg(new File("C:\\iotest\\img"));
}
// ตน้
public static void printJpg(File dir) {
File[] listFiles = dir.listFiles();
for(File f:listFiles) {
if(f.isDirectory()) {
printJpg(f);
}else {
if(f.getName().endsWith(".jpg")) {
System.out.println(f.getAbsolutePath());
}
}
}
}