流的一组有顺序的数据序列,根据操作的类型,可以分为输出流和输入流。I/O流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地
File类是 java.io 包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法来实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本事的一些信息。数据流可以将数据写入到文件中,文件也是数据流最常用的载体。
一、File类的构造方法
可以使用 File 类创建一个文件对象,通常可以使用一下3个构造方法来创建文件对象。
(1)、File(String pathname)
该构造方法通过给定的路径名字符串转换为抽象路径名来创建一个新 File 实例。语法如下:
File file = new File ("D:/1.txt");
(2)、File(String parent,String child)
该构造方法根据定义的父路径和子路径字符串(包含文件名)创建一个新的 File 对象。语法如下:
File file = new File("D:/", "2.txt");
(3)、File(File parent,String child)
该构造方法根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。语法如下:
File file2 = new File("E:/doc/", "a.txt");
二、File类常用功能
1、File类的创建功能
- public boolean createNewFile():创建一个新的文件 ,如果存在这样的文件,就不再进行创建。
- public boolean mkdir():创建一个文件夹 如果存在这样的文件夹,就不创建了。这个方法只能创建单层目录 如果创建多层目录需要一层一层创建。
- public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来 可以创建多层目录 当然也可以创建单层目录。
import java.io.File;
import java.io.IOException;
public class MyTest2 {
public static void main(String[] args) throws IOException {
File file = new File("E:\\hh.txt");
boolean b = file.createNewFile();//创建一个新的文件,第一次创建成功返回true ,重复创建返回false
System.out.println(b);
File file1 = new File("E:/ccc");//创建一个新的文件夹,第一次创建成功返回true ,重复创建返回false
boolean c = file1.mkdirs();
System.out.println(c);
}
2、File类的删除功能
- public boolean delete():删除文件或者文件夹 ,如果删除文件夹的时候,这个文件夹里面有文件的时候不能进行删除。如果想删除,只能先删除该文件夹里面的文件。
3、File 类 获取文件信息功能
File 类提供了很多方法用于获取一些文件本身的信息,常用的方法如下表所示
方法 | 返回值 | 说明 |
---|---|---|
getName() | String | 获取文件的名称 |
length() | long | 获取文件的长度(以字节为单位) |
getAbsolutePath() | String | 获取文件的绝对路径 |
getParent() | String | 获取文件的父路径(String 表现形式) |
getPath() | String | 获取文件的相对路径 |
getParentFile() | File | 获取父路径的抽象路径名(File 表示形式) |
getTotalSpace() | long | 获取此抽象路径的分区大小(以字节为单位) |
getFreeSpace() | long | 获取此抽象路径名指定的分区中未分配的字节数 |
lastModified() | long | 获取最后一次的修改时间,毫秒值 |
list() | String | 获取指定目录下的所有文件或者文件夹的名称数组 |
listFiles() | File | 获取指定目录下的所有文件或者文件夹的File数组 |
4、File 的判断功能
方法 | 返回值 | 说明 |
---|---|---|
isDirectory() | boolean | 判断是否为目录 |
isFile() | boolean | 判断是否是文件 |
exists() | boolean | 判断是否存在 |
canRead() | boolean | 判断是否可读 |
canWrite() | boolean | 判断是否可写 |
isHidden() | boolean | 判断是否隐藏 |
isAbsolute() | boolean | 判断是否使用的是绝对路径 |
5、重命名功能
- public boolean renameTo(File dest):把文件重命名为指定的文件路径
如果路径名相同就是改名,如果不相同就是剪切加改名,详细代码如下:
import java.io.File;
public class MyTest {
public static void main(String[] args) {
File file = new File("bbb.txt");
File file1 = new File("E:\\cccc.txt");
boolean b = file.renameTo(file1);
System.out.println(b);
}
}
上面的代码 file1 为需要改名的文件,file2 为改名后的文件,然后 file1 调用 renameTo()方法来改名为 fiel2 ,此时如果两个文件的路径相同就是改名,否者就是剪切加改名。
三、文件过滤器
- public String[] list(FilenameFilter filter)
- public File[] listFiles(FilenameFilter filter)
上面获取功能里面的两个方法,里面传入了一个文件过滤器,通过重写里面的逻辑来对文件进行筛选,在遍历输出数组的时候,获取到想要的文件。上面两个方法,1为返回的为文件的 String 表现形式,2为文件的 File 表现形式,比前者更为灵活。实例代码如下:
import java.io.File;
import java.io.FilenameFilter;
public class MyTest5 {
public static void main(String[] args) {
File file = new File("E:\\test");
//FileFilter 文件过滤器
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file1 = new File(dir, name);
if(file1.isFile()&&name.endsWith(".png")){
return true;
}else{
return false;
}
}
});
for (File file1 : files) {
System.out.println(file1);
}
}
}
上面的文件过滤器筛选的为 E 盘 test 文件夹下所有以 .png 结尾的图片,返回的 File 数组里存放的全都是 png 格式的图片。