File : 文件
io:input输入 output输出
path : 路径
java.io.File
File的每一个实例用于表示硬盘上的一个文件或目录(实际上表示的是一个抽象路径)
File可以:
1:可以访问其表示的文件或目录的属性信息(文件名,大小,修改时间等等)
2:创建或删除文件及目录
3:访问一个目录(文件夹)中的所有子项
File不能访问文件数据!!!!
public class FileDemo {
public static void main(String[] args) {
//访问当前项目下的demo.txt文件
/*
File常用构造器:
File(String pathname)
指定一个路径,使当前File对象表达该位置对应的文件或目录。
这里路径使用一个字符串,路径有两种写法:
绝对路径:从操作系统定义的"根"开始,比如windows中硬盘上的根从c盘,d盘等盘符开始
绝对路径的有点在于清晰明了,但是缺点就是太绝对,不能更好适应跨平台。
相对路径:相对路径写法常见的为"./",即:当前目录
相对路径有更好的适应性,适合跨平台使用,缺点是不够清晰,具体位置的
判断要视当前程序的运行环境而定。
比如在IDEA中执行当前程序时,IDEA规定的"./"就是当前项目目录
*/
// D:/Robin/jsd2203_se/demo.txt
// File file = new File("D:/Robin/jsd2203_se/demo.txt");
File file = new File("./demo.txt");
/*
File常见方法:
1:String getName()
获取File对象表示的文件或目录的名字
2:long length()
获取当前File对象表示的文件或目录占用的硬盘空间,单位为字节
11:27回来
*/
String name = file.getName();
System.out.println(name);
long len = file.length();
System.out.println(len);
boolean cr = file.canRead();//是否可读
boolean cw = file.canWrite();//是否可写
System.out.println("是否可读:"+cr);
System.out.println("是否可写:"+cw);
boolean ih = file.isHidden();
System.out.println("是否隐藏:"+ih);//是否隐藏
}
}
parent:父母 java中我们可以理解为是父目录
File常见的构造器二:
File(File parent,String pathname)
参数1:当前File表示的文件或目录所处的父目录
参数2:当前File表示的文件或目录的地址
public class FileDemo2 {
public static void main(String[] args) throws IOException {
//在当前目录下新建一个目录:test
File dir = new File("./test");
if(!dir.exists()){
dir.mkdirs();//创建该目录
}
//在test目录下新建一个文件:demo.txt
// File file = new File("./test/demo.txt");
File file = new File(dir,"demo.txt");
if(!file.exists()){
file.createNewFile();
}
}
}
Filter : 过滤器
accept : 接受
获取一个目录中满足条件的所有子项
重载的listFiles方法:
File[] listFiles(FileFilter filter)
该方法需要传入一个过滤器,过滤器中定义了一个过滤条件,此时listFiles方法会利用该
过滤器将该目录中所有子项经过一遍过滤器,并最终返回符合过滤器要求的所有子项。
public class LitsFilesDemo2 {
public static void main(String[] args) {
//获取当前目录下名字中含有字母"s"的所有子项
File dir = new File(".");
if(dir.isDirectory()){
FileFilter filter = new FileFilter() {
/*
该方法的作用就是该过滤器的过滤条件,
将参数file对象想象为是一个将要经过该过滤器的元素。
方法返回值表达该元素是否满足过滤器要求。
*/
public boolean accept(File file) {
String name = file.getName();//获取该文件或目录的名字
// int index = name.indexOf("s");
// return index>=0;
//字符串支持boolean contains(String str),用于判断当前字符串是否包含参数指定的内容
return name.contains("s");
// String regex = ".*s.*";
}
};
//将过滤器插到listFiles方法中,将每个子项都经过一次过滤器并返回符合要求的。
File[] subs = dir.listFiles(filter);
System.out.println(subs.length);
for(int i=0;i<subs.length;i++){
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
访问一个目录中的所有子项
public class ListFilesDemo {
public static void main(String[] args) {
//访问当前目录下的所有子项
File dir = new File(".");//"."就表示当前目录本身
/*
boolean isFile()
判断当前File表示的是否为一个文件
boolean isDirectory()
判断当前File表示的是否为一个目录
*/
if(dir.isDirectory()){//确保dir表示的是一个目录
/*
File[] listFiles()
将当前File对象表示的目录中所有子项返回。
返回的数组中每个File元素表示的就是其中一个子项。
*/
File[] subs = dir.listFiles();
System.out.println("当前目录下一共有:"+subs.length+"个子项");
for(int i=0;i<subs.length;i++){
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
Filter : 过滤器
accept : 接受
获取一个目录中满足条件的所有子项
重载的listFiles方法:
File[] listFiles(FileFilter filter)
该方法需要传入一个过滤器,过滤器中定义了一个过滤条件,此时listFiles方法会利用该
过滤器将该目录中所有子项经过一遍过滤器,并最终返回符合过滤器要求的所有子项。
public class LitsFilesDemo2 {
public static void main(String[] args) {
//获取当前目录下名字中含有字母"s"的所有子项
File dir = new File(".");
if(dir.isDirectory()){
FileFilter filter = new FileFilter() {
/*
该方法的作用就是该过滤器的过滤条件,
将参数file对象想象为是一个将要经过该过滤器的元素。
方法返回值表达该元素是否满足过滤器要求。
*/
public boolean accept(File file) {
String name = file.getName();//获取该文件或目录的名字
// int index = name.indexOf("s");
// return index>=0;
//字符串支持boolean contains(String str),用于判断当前字符串是否包含参数指定的内容
return name.contains("s");
// String regex = ".*s.*";
}
};
//将过滤器插到listFiles方法中,将每个子项都经过一次过滤器并返回符合要求的。
File[] subs = dir.listFiles(filter);
System.out.println(subs.length);
for(int i=0;i<subs.length;i++){
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
make : 做
directory : 目录
注:mkdir实际上也是linux中的一个命令,作用就是新建一个目录(文件夹)
创建目录
public class MkdirDemo {
public static void main(String[] args) {
//在当前目录下新建一个目录:demo
// File dir = new File("./demo");
File dir = new File("./a/b/c/d/e/f/demo");
if(dir.exists()){
System.out.println("该目录已存在");
}else{
/*
mkdir()方法在创建目录时要求该目录所在的目录必须存在,否则创建失败
mkdirs()方法则会在创建该目录时将所有不存在的父目录全部创建出来。
实际开发中推荐使用mkdirs()这个方法。
*/
// dir.mkdir();//将该目录创建出来
dir.mkdirs();//将该目录创建出来
System.out.println("目录已创建");
}
}
}
create : 创造,制造
exists : 存在
File提供了创建一个文件的方法:createNewFile()
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
//在当前目录下新建一个文件:test.txt
File file = new File("./test.txt");
boolean exists = file.exists();//判断当前File表示的文件或目录是否真实存在
if(exists) {
System.out.println("该文件已经存在了!");
}else{
file.createNewFile();//创建它
}
}
}
删除一个目录
public class DeleteDirDemo {
public static void main(String[] args) {
//将当前目录下的demo目录删除
// File file = new File("./demo");
File file = new File("./a");
if(file.exists()){//如果该目录存在
/*
delete()方法在删除目录时,要求目录必须是空的,否则删除失败。
*/
file.delete();
System.out.println("目录已删除!");
}else{
System.out.println("该目录不存在!");
}
}
}
delete : 删除
删除一个文件
public class DeleteFileDemo {
public static void main(String[] args) {
//将当前目录下的文件test.txt删除
File file = new File("./test.txt");
if(file.exists()){//如果该文件存在
file.delete();
System.out.println("文件已删除!");
}else{
System.out.println("该文件不存在!");
}
}
}