-
2018-07-05 23:53:30
本篇来学习File类的判断功能,主要的判断有:判断是否是目录,判断是否是文件,判断是否存在,判断是否可读,判断是否可写,判断是否隐藏。前面我们知道了判断是否存在这个方法,下面我们一次学习其他方法。
1.判断是否是文件和判断是否是文件夹
我在Eclipse项目根目录分别创建了aaa的一个文件夹,abc.txt文件。执行下面代码,运行输出两个都是true.
package file; import java.io.File; public class Demo1_File { public static void main(String[] args) { File file = new File("abc.txt"); File dir = new File("aaa"); // 判断是否是文件 System.out.println(file.isFile()); //判断是否是文件夹 System.out.println(dir.isDirectory()); } }
2.判断是否可读
这里需要注意,即使java设置了文件不可读,但是由于windows上文件都认为可读,这个方法测试最好在linux系统上,这里记住这个情况就可以。
package file; import java.io.File; public class Demo1_File { public static void main(String[] args) { File file = new File("abc.txt"); // 判断是否是文件 file.setReadable(false); System.out.println(file.canRead()); } }
3.判断是否可写
在windows中是可以设置为不可写的文件状态,这个不会出现上面不可读的情况。
package file; import java.io.File; public class Demo1_File { public static void main(String[] args) { File file = new File("abc.txt"); // 设置为不可写 file.setWritable(false); System.out.println(file.canWrite()); } }
运行,输出false。
4.判断文件和文件夹是否隐藏
这里运行为true,如果你要测试文件隐藏的状态,你可以去Eclipse项目的系统文件夹结构,找到abc.txt文件,右键,勾选隐藏,然后再次运行代码,就显示true。package file; import java.io.File; public class Demo1_File { public static void main(String[] args) { File file = new File("abc.txt"); File dir = new File("aaa"); // 判断是否为隐藏 System.out.println(file.isHidden()); System.out.println(dir.isHidden()); } }
更多相关内容 -
一、File类的使用
2022-01-17 09:35:093.构造器3(public File(File parent,String chile)) (二)路径 1.相对路径 2.绝对路径 3.路径分隔符 ①.不同系统中有不同的路径分隔符 ②.注意事项 三、File类的常用方法 (一)获取 pub...目录
1.构造器1(public File(String pathname))
2.构造器2(public File(String parent,String child))
3.构造器3(public File(File parent,String chile))
public String getAbsolutePath()
public boolean renameTo(File dest)
public boolean createNewFile():文件的创建
public boolean mkddir():文件目录的创建
public boolean mkdirs():文件目录的创建
一、概念
⚪ java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
⚪ File能创建、删除、重命名文件和目录,但File不能访问文件内容本身,如果要访问文件内容本身,则需要使用输入\输出流
⚪ 想要Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录
⚪ File对象可以作为参数传递给流的构造器
二、创建类的实例
(一)常用构造器
1.构造器1(public File(String pathname))
@Test public void test1(){ File file1 = new File("hello.txt"); File file2 = new File("E:\\BaiduNetdiskDownload\\javasenior\\day08\\src\\java4\\he.txt"); System.out.println(file1); System.out.println(file2); }
2.构造器2(public File(String parent,String child))
File file3 = new File("E:\\BaiduNetdiskDownload","javasenior");
3.构造器3(public File(File parent,String chile))
File file4 = new File(file3,"hi.txt");
(二)路径
1.相对路径
相较于某个路径下指明的路径
@Test public void test1(){ File file = new File("hello.txt"); }
2.绝对路径
包含盘符在内的文件或文件目录的路径
File file2 = new File("E:\\BaiduNetdiskDownload\\javasenior\\day08\\src\\java4\\he.txt")
3.路径分隔符
路径中的每级目录之间用一个路径分隔符隔开
①.不同系统中有不同的路径分隔符
- Windows和DOS系统默认用“ \ ”表示
- UNIX和URL用“ / ”表示
②.注意事项
Java程序支持跨平台运行,因此路径分隔符要谨慎使用
为解决以上隐患,File类提供了一个常量:
public static final String separator
根据操作系统,动态的提供分隔符
三、File类的常用方法
(一)获取
public String getAbsolutePath()
获取绝对路径
public String getPath()
获取路径
public String getName()
获取名称
public String getParent()
获取上层文件目录路径
public long length()
获取文件长度(即:字节数),不能获取目录的长度
public long lastModefied()
获取最后一次的修改时间(毫秒值)
1.以上方法的使用:
@Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new File("E:\\IO\\hi.txt"); System.out.println(file1.getAbsoluteFile()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(file1.lastModified()); System.out.println(); System.out.println(file2.getAbsoluteFile()); System.out.println(file2.getPath()); System.out.println(file2.getName()); System.out.println(file2.getParent()); System.out.println(file2.length()); System.out.println(file2.lastModified()); }
2.新建文件并写入内容
3.再次运行上面的代码
@Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new File("E:\\IO\\hi.txt"); System.out.println(file1.getAbsoluteFile()); System.out.println(file1.getPath()); System.out.println(file1.getName()); System.out.println(file1.getParent()); System.out.println(file1.length()); System.out.println(new Date(file1.lastModified())); System.out.println(); System.out.println(file2.getAbsoluteFile()); System.out.println(file2.getPath()); System.out.println(file2.getName()); System.out.println(file2.getParent()); System.out.println(file2.length()); System.out.println(file2.lastModified()); }
2.以下两个方法适用于文件目录:
① public String[] list()
获取指定目录下的所有文件或者文件目录的名称数组
@Test public void test3(){ File file = new File("E:\\BaiduNetdiskDownload\\javasenior"); String[] list = file.list(); for(String s : list){ System.out.println(s); } }
② public File[] listFiles()
获取指定目录下的所有文件或者文件目录的File数组
File[] files = file.listFiles(); for(File f : files){ System.out.println(f); }
(二)重命名
public boolean renameTo(File dest)
把文件重命名为指定的文件路径
以file1.renameTo(file2)为例:
要想保证返回的是true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在
@Test public void test4(){ File file1 = new File("hello.txt"); File file2 = new File("E:\\IO\\hi.txt"); boolean renameTo = file1.renameTo(file2); System.out.println(renameTo); }
(二)判断
public boolean isDirectory()
判断是否是文件目录
public boolean isFile()
判断是否是文件
public boolean exists()
判断是否存在
public boolean canRead()
判断是否可读
public boolean canWrite()
判断是否可写
public boolean isHidden()
判断是否隐藏
@Test public void test5(){ File file1 = new File("hello.txt"); System.out.println(file1.isFile()); System.out.println(file1.isDirectory()); System.out.println(file1.exists()); System.out.println(file1.canRead()); System.out.println(file1.canWrite()); System.out.println(file1.isHidden()); }
(三)创建
public boolean createNewFile():文件的创建
@Test public void test6() throws IOException { File file1 = new File("hi.txt"); if(!file1.exists()){ file1.createNewFile(); System.out.println("创建成功!"); }else {//文件存在 file1.delete(); System.out.println("删除成功!"); } }
public boolean mkddir():文件目录的创建
File file1 = new File("E:\\IO\\io1"); boolean mkdir = file1.mkdir(); if(mkdir){ System.out.println("创建成功!"); }
public boolean mkdirs():文件目录的创建
File file2 = new File("E:\\IO\\io2"); boolean mkdirs = file2.mkdirs(); if(mkdirs){ System.out.println("创建成功!"); }
区别:
@Test public void test7(){ File file1 = new File("E:\\IO\\io1\\io3"); boolean mkdir = file1.mkdir(); if(mkdir){ System.out.println("创建成功1!"); } File file2 = new File("E:\\IO\\io1\\io4"); boolean mkdirs = file2.mkdirs(); if(mkdirs){ System.out.println("创建成功2!"); } }
当io1不存在时,使用 mkdirs()可以创建成功
(四)删除
public boolean delete()
-
Java基础之File类详解
2021-01-20 11:44:09Java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。 重点有三个单词需要记住:file...Java基础之File类详解
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
Java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。
重点有三个单词需要记住:file(文件),directory(文件夹),path(路径)
构造方法
构造方法摘要
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
//File类的构造函数--练习 private static void show02(){ File file= new File("F:\\04Java\\19java","Hello.java"); System.out.println(file); } private static void show01(){ File f1= new File("F:\\04Java\\19java"); System.out.println(f1);//重写了ToString()方法 File f3= new File("b.txt"); System.out.println(f3); } private static void show03(){ File file=new File("F:\\04Java\\19ava"); File newFile = new File(file,"Hello.java"); System.out.println(newFile); }
主要成员方法
获取的方法
方法摘要 String
getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。String
getName()
返回由此抽象路径名表示的文件或目录的名称。String
getPath()
将此抽象路径名转换为一个路径名字符串。long
length()
返回由此抽象路径名表示的文件的长度。//获取文件绝对路径 private static void show04() { File file=new File("F:\\04Java\\19java"); File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径 System.out.println(absoluteFile); File file2=new File("a.txt"); File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径 System.out.println(absoluteFile2); System.out.println("____________________________"); } //file1.getName() 获取最后一个路径名 private static void show02(){ File file=new File("F:\\04Java\\19java"); String name=file.getName();//最后的路径名 System.out.println(name); File file1=new File("F:\\04Java\\19java\\小小张自由"); String name1=file1.getName();//最后的路径名 System.out.println(name1); } //file.getPath() 构造函数中传递什么值,就返回什么值 private static void show01(){ File file=new File("F:\\04Java\\19java"); String path=file.getPath();//传递的参数是什么,返回值就是什么 System.out.println(path); File file1=new File("b.txt"); String path1=file1.getPath(); System.out.println(path1); } //file.length() 获取文件的大小 private static void show03(){ File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip"); long length=file.length();//文件名的大小,路径错误则为0 System.out.println(length);//单位字节 }
判断的方法
方法摘要 boolean
exists()
测试此抽象路径名表示的文件或目录是否存在boolean
isDirectory()
测试此抽象路径名表示的文件是否是一个目录。boolean
isFile()
测试此抽象路径名表示的文件是否是一个标准文件。//用于判断构造函数中给定的路径是否为目录、文件 public static void main(String[] args){ File file = new File("F:\\04Java\\19java"); System.out.println(file.exists());//判断文件名是否存在 System.out.println(file.isDirectory());//判断是否以文件夹结尾 System.out.println(file.isFile());//判断是否以文件结尾 }
创建删除的方法
方法摘要 boolean
createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。boolean
delete()
删除此抽象路径名表示的文件或目录。boolean
mkdir()
创建此抽象路径名指定的目录。boolean
mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。//File类中CreateNewFile()方法只能新建文件,创建成功true private static void show01()throws IOException{ File file=new File("F:\\04Java\\19java\\99.txt"); boolean newFile=file.createNewFile();//只能新建文件,创建成功true System.out.println(newFile); } //File类中Delete()方法 private static void show03(){ File file=new File("F:\\04Java\\19java\\HelloJava"); boolean delete=file.delete();//可以删除文件夹只能是空文件夹 System.out.println(delete); File file1=new File("F:\\04Java\\19java\\99.txt"); boolean delete1=file1.delete();//可以删除文件 System.out.println(delete1); } //File类中mkdir()和mkdirs()的方法创建单级、多级目录 private static void show02(){ File file=new File("F:\\04Java\\19java\\HelloJava"); boolean mkdir=file.mkdir();//创建单级目录 System.out.println(mkdir); File file1=new File("F:\\04Java\\19java\\Hello\\Java"); boolean mkdirs=file1.mkdirs();//创建多级目录 System.out.println(mkdirs); }
目录的遍历
方法摘要 String[]
list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。File[]
listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。//file.listFiles();方法返回值是一个File[] private static void show02(){ File file=new File("F:\\04Java\\19java"); File[]files=file.listFiles(); for(File file1:files){ System.out.println(file1); } } //file.list();方法返回值是一个String[] private static void show01(){ File file=new File("F:\\04Java\\19java"); String[] list=file.list(); System.out.println(list);//地址值 for(String i:list){ System.out.println(i); } }
案例-文件搜索
1. 搜索后缀名为.pdf的文件
2. 目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录。
3. 遍历目录时,获取的子文件,通过文件名称,判断是否符合条件。
public class DiGuiDemo3 { public static void main(String[] args) { // 创建File对象 File dir = new File("E:\\书籍"); // 调用打印目录方法 printDir(dir); } public static void printDir(File dir) { // 获取子文件和目录 File[] files = dir.listFiles(); // 循环打印 for (File file : files) { if (file.isFile()) { // 是文件,判断文件名并输出文件绝对路径 if (file.getName().endsWith(".PDF")) { System.out.println("文件名:" + file.getAbsolutePath()); } }else{ // 是目录,继续遍历,形成递归 printDir(file); } } } }
案例-文件搜索(高级玩法)
使用FileFilter接口或者FilenameFilter接口,是File的过滤器。该接口方法的参数是FIle类的对象。接口中只有一个方法。
//Sun公司封装的两个文件过滤的接口 public interface FilenameFilter { boolean accept(File dir, String name); } public interface FileFilter { boolean accept(File pathname); }
下面任意一种方式都可以实现文件搜索的功能:方式一使用了 FileFilter接口,方式二使用了FilenameFilter接口。
以下三种玩法一个使用了接口的实现类,一个使用了Lambda表达式、一个使用了匿名内部类
public static void main(String[] args) { File file=new File("E:\\书籍"); //System.out.println(file); getAllFile(file); } //以下是三种玩法 public static void getAllFile(File file) { //方式一、使用FIleFilter接口的实现类 File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口 //方式1. 使用Lambda表达式 File[] files = file.listFiles((pathname)->{ return pathname.getName().toLowerCase().endsWith(".pdf");// }); //方式二、使用FilenameFilter File[] files =file.listFiles(new FilenameFilter() { @Override //两个路径 public boolean accept(File dir, String name) { return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf"); } }); }
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
-
JAVA基础知识之File类
2018-07-13 10:46:30一、File类定义 1.... File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较public class File implements Serializable,Comparable<File>...一、File类定义
1. File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类
2. File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较
public class File implements Serializable,Comparable<File> { }
二、File类实例域
1) path :封装的String类型变量,代表了文件的路径
private String path; public String getPath() { return path; }
2) separatorChar:静态常量,代表了运行该程序的系统的路径分隔符,windows系统为"\" ,linux系统为“/”
public static void main(String[] args) { System.out.println(File.separator); //在windows系统下运行结果为\ }
3) separator :静态常量,是由separatorChar扩展而来的字符串型常量,运行结果和separatorChar一样
public static final String separator = "" + separatorChar;
4)pathSeparatorChar :静态常量,代表用于分割多个路径的系统分隔符。 在UNIX系统上,此字符为':'而 Windows系统上它是';'
public static void main(String[] args) { System.out.println(File.pathSeparator); //运行结果为; }
5)pathSeparator: 静态常量,由pathSeparatorChar扩展而来的字符串,运行结果和pathSeparatorChar一样
public static final String pathSeparator = "" + pathSeparatorChar;
三、File类构造函数
注意:构造函数只是创建一个File实例,并没有以文件做读取等操作,因此路径即使是错误的,也可以创建实例不报错
1)通过给定的字符串路径(一般是文件的绝对路径)转为抽象路径名用来创建File实例,当传入null时会抛出NullPointerException空异常错误
public File(String pathname) {}
public class Test2 { public static void main(String[] args) { File file=new File("xxx"); System.out.println(file.getPath()); //路径结果就是xxx } }
2)从父路径名字符串和子路径名字符串(一般是相对父类的相对路径)创建新的File实例
public File(String parent, String child) {}
2.1) 若子路径child为Null,会抛出NullPointerException空异常错误
2.2) 当父路径为Null时,会以子路径child作为绝对路径创建实例,等同于调用第一个File(String child )效果一样
public class Test2 { public static void main(String[] args) { String parent=null; File file=new File(parent,"xxx"); System.out.println(file.getPath()); //路径结果就是xxx } }
2.3) 当父路径不为空时,会以父路径作为目录,子路径作为父路径下的目录或者文件名,最后得到的实例对象的路径就是父路径和子路径的组合
public class Test2 { public static void main(String[] args) { String parent = "E:/test"; File parentFile= new File(parent); String child = "E:/test/1.txt"; File file = new File(parentFile, child); System.out.println(file.getPath()); // 路径结果就是E:\test\E:\test\1.txt } }
3)通过父路径File实例对象和子路径字符串创建新的File实例,等同于上面的方法中把父路径字符串创建File实例然后传入一样
public class Test2 { public static void main(String[] args) { String parent = "E:/test"; File parentFile= new File(parent); String child = "E:/test/1.txt"; File file = new File(parentFile, child); System.out.println(file.getPath()); // 路径结果就是E:\test\E:\test\1.txt } }
4)通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例,这个方法暂时没有看懂,需要查阅资料加深理解
public File(URI uri) {}
四、File类中的各种常用方法
下面是我E盘下test文件夹的文件情况,以此作为案例
1)获取实例对象代表的文件名字(包含文件后缀)
public String getName()}
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.getName()); // 结果是1.txt System.out.println(file2.getName()); // 结果是异常1.jpg System.out.println(file3.getName()); // 结果是xxx } }
2)获取实例对象代表的文件上级目录
public String getParent()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.getParent()); // 结果是E:\test System.out.println(file2.getParent()); // 结果是E:\test System.out.println(file3.getParent()); // 结果是null } }
3)获取实例对象的父项的实例对象,如果此路径名未指定父目录,则返回null;也就是获取对象的上级目录然后再实例化一个对象
public File getParentFile()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.getParentFile()); // 结果是E:\test System.out.println(file2.getParentFile()); // 结果是E:\test System.out.println(file3.getParentFile()); // 结果是null } }
4)获取实例对象代表的文件的实际路径
public String getPath()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.getPath()); // 结果是E:\test\1.txt System.out.println(file2.getPath()); // 结果是E:\test\异常1.jpg System.out.println(file3.getPath()); // 结果是xxx } }
5)检测该实例对象代表的文件的路径是否是绝对路径(windows系统中路径是以驱动盘开始的就是绝对路径)
public boolean isAbsolute()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.isAbsolute()); // 结果是true System.out.println(file2.isAbsolute()); // 结果是true System.out.println(file3.isAbsolute()); // 结果是false } }
6)获取实例对象代表的文件的绝对路径
public String getAbsolutePath()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.getAbsolutePath()); // 结果是E:\test\1.txt System.out.println(file2.getAbsolutePath()); // 结果是E:\test\异常1.jpg System.out.println(file3.getAbsolutePath()); // 结果是D:\workspace\lettcode\xxx(编译器的工作空间作为解析目录了) } }
7)实例对象代表的文件是否存在
public boolean exists()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.exists()); // 结果是true System.out.println(file2.exists()); // 结果是true System.out.println(file3.exists()); // 结果是false } }
8)检测实例对象代表的是否是文件
public boolean isFile()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.isFile()); // 结果是true System.out.println(file2.isFile()); // 结果是true System.out.println(file3.isFile()); // 结果是false } }
9)检测实例对象代表的是否是目录
public boolean isDirectory()
public class Test2 { public static void main(String[] args) throws URISyntaxException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.isDirectory()); // 结果是false System.out.println(file2.isDirectory()); // 结果是false System.out.println(file3.isDirectory()); // 结果是false } }
10)创建新文件--当且仅当实例对象代表的文件不存在时才可以创建新文件
public boolean createNewFile() throws IOException
public class Test2 { public static void main(String[] args) throws IOException { File file = new File("E:/test/1.txt"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.createNewFile()); // 结果是false,已经存在无法创建 System.out.println(file2.createNewFile()); // 结果是false,已经存在无法创建 System.out.println(file3.createNewFile()); // 结果是true,不存在可以创建 } }
创建的XXX文件的目录地址是以编译器的工作空间为上级目录加上创建实例对象的时候的路径名形成最后的路径
11)删除实例对象代表的文件或目录,当代表目录时,必须目录下为空才可以删除
public boolean delete()
public class Test2 { public static void main(String[] args) throws IOException { File file = new File("E:/test/"); File file2 = new File("E:/test/异常1.jpg"); File file3 = new File("xxx"); // 错误路径 System.out.println(file.delete()); // 结果是false,目录无法删除 System.out.println(file2.delete()); // 结果是true,文件可以删除 System.out.println(file3.delete()); // 结果是true,文件可以删除 } }
执行方法后的test文件如下:
12)根据实例对象的路径名创建目录(若目录已存在,则false;若路径是文件,则fasle;若路径的上级目录不存在则false)
public boolean mkdir()
public class Test2 { public static void main(String[] args) throws IOException { File file = new File("E:/test1/"); File file2 = new File("E:/test2/异常1.jpg"); File file3 = new File("E:/ceshi"); File file4 = new File("E:/ceshi2/2018"); System.out.println(file.mkdir()); // false 因为test1目录已存在 System.out.println(file2.mkdir()); // false,因为上级目录test2不存在 System.out.println(file3.mkdir()); // true,因为ceshi目录不存在且是上级目录是E盘存在的 System.out.println(file4.mkdir()); // false,因为ceshi2目录不存在,所以不成功 } }
13)根据实例对象的路径创建目录,包括创建那些必须的且不存在的父级目录
public boolean mkdirs()
public class Test2 { public static void main(String[] args) throws IOException { File file = new File("E:/test1/"); File file2 = new File("E:/test2/异常1.jpg"); File file3 = new File("E:/ceshi"); File file4 = new File("E:/ceshi2/zhagnsan"); System.out.println(file.mkdirs()); // false 因为test1目录已存在 System.out.println(file2.mkdirs()); // true,因为目录不存在所以可以创建,但注意生成的异常1.jpg是文件夹不是图片 System.out.println(file3.mkdirs()); // true,因为目录不存在所以可以创建 System.out.println(file4.mkdirs()); // true,因为目录不存在所以可以创建 } }
14) 获取实例对象代表的文件下的各级文件名和目录名,返回一个字符串数组
public String[] list()
1. 当实例对象代表的是文件不是目录时,返回NUll对象
2. 获取的是该目录下的文件名和目录名,并不包含该目录名称和其上级目录名称
3. 字符串数组中都是文件名或目录名并不是路径名
4. 字符串中的元素并不是按照实际系统中目录下的顺序排列的
例如E盘test文件夹里面是这样的
调用list方法
public class Test2 { public static void main(String[] args) throws IOException { File file2 = new File("E:/test"); String[] list = file2.list(); for (int i = 0; i < list.length; i++) { System.out.println(list[i]); // 结果为1.txt、xxx、工资表.xls、异常1.jpg、第一个目录、第三个目录 } } }
15)获取实例对象代表的文件下的各级文件名和目录名并指定过滤器进行过滤,返回一个字符串数组
public String[] list(FilenameFilter filter)
1. 过滤器是FilenameFilter类对象,当传入null时,效果和list()方法一样
2. 过滤器是指过滤掉不符合名称的名字
3. FilenameFilter 是一个接口,因此需要自己新建一个类来实现该接口作为参数传入进去
4.仔细研究方法的源码可以发现,所谓过滤就是要重写FilenameFilter的accept方法并在方法中过滤
public String[] list(FilenameFilter filter) { String names[] = list(); if ((names == null) || (filter == null)) { return names; } List<String> v = new ArrayList<>(); for (int i = 0 ; i < names.length ; i++) { if (filter.accept(this, names[i])) { //必须重写accept方法,并在方法内对传入的name进行判定是否合乎过滤条件 v.add(names[i]); } } return v.toArray(new String[v.size()]); }
5. 例如我们只要后缀名是txt的文件名称,那么可以按照以下逻辑来处理
创建FilenameFilter的实现类TxtFilter并重写accept方法,在方法中进行判定
public class TxtFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { if(name.endsWith(".txt")) { return true; } return false; } }
但是仔细思考,如果我还需要过滤.java结束的呢?难道又去重新创建实现类?因此可以用过滤条件作为构造参数传入构造方法中初始化其变量,这样就是可变的
public class TxtFilter implements FilenameFilter { private String FilterName; // 作为过滤器名称变量 public TxtFilter(String FilterName) { this.FilterName = FilterName; // 初始化构造过滤器名称,这样就不用每次都创建新类 } public String getFilterName() { return FilterName; // 公有的域访问器方法,提供接口获取 } @Override public boolean accept(File dir, String name) { String fileterNameString = this.getFilterName(); // this代表着调用accept方法的变量 if (name.endsWith(fileterNameString)) { return true; } return false; } }
我们测试下结果
public class Test2 { public static void main(String[] args) throws IOException { File file2 = new File("E:/test"); TxtFilter filter=new TxtFilter(".txt"); //过滤器,只需要.txt结尾的 String[] list = file2.list(filter); for (int i = 0; i < list.length; i++) { System.out.println(list[i]); // 结果为1.txt } } }
-
Java File类的使用
2022-04-23 18:37:12在File的类中我们需要掌握以下几种常用的方法: 1:File对象的构造方法2:File对象获取名称的方法名称,3:File对象获取绝对路径、 4:File对象获取文件大小的方法名称、5:判断是否是文件、判断是否是文件夹的... -
详述java的File类常用方法
2019-08-21 17:17:27File类代表一个特定的文件或者目录(文件夹),并提供了若干方法对该文件或目录进行操作。 File类构造方法: 常用的有三种: 1、File(String pathname):通过路径名创建一个新 File 实例。 2、File(File parent, ... -
File类的基本功能
2018-05-15 22:16:26IO流就是对文件进行操作的 File类的构造方法:public File(String pathname):表示pathname的抽象路径表现的形式 (开发中使用这种方式)public File(String parent,String child):根据 parent 路径名字符串和 child... -
Java文件操作 File 类(创建文件、删除、创建目录,查询文件信息)
2019-08-04 10:41:55使用File类进行文件的操作,使用Java.io包完成一共有5个核心类和一个接口 五个核心接口:File、InputStream、OutputStream、Reader、Writer 一个标识接口:Serializable 一、创建文件 二、创建带有子目录的... -
Java File类
2019-10-06 11:16:31Java File类一、File类的基本使用二、File类的优化三、获取文件信息四、案例案例一:列出制定目录中的全部文件案例二:批量修改文件名称 在Java中,File类是唯一一个与文件本身操作(文件的创建、删除、重命名等等)... -
File类简介及常用功能
2018-01-04 10:52:45(1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件 (2)构造方法 A:File file = new File("e:\\demo\\a.txt"); B:File file = new File("e:\\demo","a.txt"); C:File file = ne -
【JAVA】通过File类操作文件夹(目录创建、删除)和文本文件(增/删/改/查)
2020-05-13 15:17:52一、需要导入的包 import java.io.File; 二、常用命令表 1 public String getName() ... public File getParentFile() 返回此抽象路径名的父路径名的抽象路径名,如果此路径名没有指定父目录,则返回null.. -
java File类
2018-04-01 14:23:08官方文档地址:https://docs.oracle.com/javase/7/docs/api/java/io/File.html Java文件类以抽象的方式代表文件名和...通过以下构造方法创建一个File对象。 1. 通过给定的父抽象路径名和子路径名字符串创建一个新... -
File类——JAVA实现批量修改文件名称
2021-02-27 20:13:18最近做了一道题目如下批量修改文件名称假设你某天跟朋友出去玩,使用某数码相机拍摄了...这些文件名实际上是自动生成的,对你来说不方便看。你现在希望将这些照片都改成“2016-4-15-i”i表示第几张照片如2016-4-15-... -
Java中的File类与IO流(File类的基本使用、字节流、字符流、转换流、java文件拷贝)
2019-03-09 22:09:09File类的基本使用1.1 文件操作1.1.1 创建新文件1.1.2 删除文件1.1.3 路径分隔符1.2 目录操作1.2.1 取得父路径与父File对象1.2.2 创建目录1.3 取得文件或者目录的信息(大小、最后修改日期)2. IO流2.1 流的操作过程... -
File类之拷贝文件
2019-04-16 20:07:26需求: 从键盘接受两个文件夹路径. 把其中一个文件夹中的内容拷贝到另一个文件夹 1.获取文件夹路径 2.把其中一个文件夹中... public static File getDir(){ System.out.println("请输入文件夹路径"); Scanner sc... -
java基础复习--File类&递归
2021-11-10 19:26:18一、File类概述 1、概念 2、构造方法 3、常用方法 (1)、方法列举 (2)、代码演示(部分常用方法) (3)、注意事项 二、File类导图建模 三、递归 1、什么是递归 2、递归的基本原理 3、递归三大要素 ... -
Java File类使用及获取整个目录下的文件/删除整个文件夹
2019-01-21 21:12:48有以下四种方法构建一个File对象: File(File parent,String child):以父抽象路径名和子路径名字符串创建新的File实例。 File(String pathName):给定路径名字符串转换为抽象路径名来创建新的File实例。 File(St... -
File类常用方法
2017-09-20 11:03:20Java.io.File类主要是完成了文件夹管理的命名、查询文件属性和处理...以下描述了File类的主要常用方法。 File():构造函数,一般是依据文件所在的指定位置来创建文件对象。 CanWrite():返回文件是否可写。 Can -
Java之File类详解
2018-09-11 14:33:073 File类常用的方法总结 3.1 创建 3.2 删除 3.3 判断 3.4 获取 1 构造方法 public File(String pathname) { } public File(String parent, String child) { } public File(File parent, Strin... -
File类三种得到路径的方法
2019-04-09 10:14:00File类三种得到路径的方法 2010年11月29日 20:37:00 ssyan 阅读数:27123 标签: file microsoft string exception windows unix getPath public String getPath()将此抽象路径名转换为一个路径名字符... -
Java File类介绍(源码分析)
2019-03-19 11:28:30一、File类 File类的源码在Java.io包下。 -
Java中的File文件类详解
2016-08-02 22:00:35Java中的File文件类详解文件操作在Java的io操作中占有十分重要的地位,本文从以下几个方面来接受Java中对文件的操作。 1. Java中新建或者删除一个文件,文件夹以及createNewFile(),delete(),mkdir(),mkdirs()函数的... -
Java File类的详解
2016-07-30 20:00:26File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动,传送,亦可以被其他程序使用.由于数据... -
Java中File类,你知道有哪些api方法吗?
2020-06-06 16:55:4125 public boolean setReadOnly() 标记此抽象路径名指定的文件或目录,以便只可对其进行读操作 26 public static File createTempFile(String prefix, String suffix, File directory) throws IOException 在指定... -
javaSE File,File类的判断方法。exists(), isDirectory()
2018-06-14 16:43:05Demo.java:package ... import java.io.File; // File类的判断功能 public class Demo { public static void main(String[] args) { function_1(); } public static void function_1(){ File file = n... -
Java中File类的isDirectory()介绍方法
2018-09-08 18:25:27*在本机的磁盘系统中,找一个文件夹,利用File类的提供方法, * 列出该文件夹中的所有文件的文件名和文件的路径,执行效果如下: 路径是xxx的文件夹内的文件有: 文件名:abc.txt 路径名:c:\temp\abc.... -
Java文件– java.nio.file.Files类
2020-07-13 13:04:52Java Files class was introduced in Java 1.7 and is a part of ... Java Files类是Java 1.7中引入的,是java.nio.file包的一部分。 Java文件类 (Java Files Class) Java Files class contains static methods... -
javaFile类和IO输入输出流中随机读写类RandomAccessFile类的讲解
2018-08-22 08:51:47在java中用io流来进行文件的输出和输出操作,那么首先类讲解一下什么是输入和输出: 所有往内存中送数据都是输入 所有从内存出数据都是输出 能用java.io包中的api操作的输入输出: 内存–>外存(硬盘,光盘,... -
JAVA之IO技术File类的使用
2014-05-03 13:36:50* File类是对文件和文件夹的抽象。 * File类的常见方法: * 1.创建 * createNewFile():在指定的位置创建文件,如果该文件已经存在,则不创建,返回false。 * 和输出流对象不一样,输出流对象,只要已建立... -
文件操作类File
2021-06-13 22:32:24java.io 包中包含一个File类,允许你使用文件。 首先,创建一个File对象,并在构造函数中指定文件的路径。 import java.io.File; ... File file = new File("D:\\data\\input-file.txt"); 使用exists()方法,你可以...