File
要学习IO流,就必须掌握硬盘上的路径的表形式,Java就提供了一个File类:文件件和目录路径名的抽象表示形式
构造方法:
public File(String pathname):将该路径名称封装成了一个File实例
例: File f = new File(“e:\demo\a.txt”);
File(String parent, String child):将父文件夹或者目录里面的child文件封装成一个File实例
例: File f = new File(“e:\demo\”,”a.txt”);
File(File parent, String child:参数一:表示封装了File对象,该文件夹下的文件
例: File f1 = new File(“e:\demo”);
File f2 = new File(f1,”a.txt”);
File类中常用的成员方法:
public boolean createNewFile():表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException
public boolean mkdir():创建文件夹/目录,如果存在该文件夹,就不需要创建
public boolean mkdirs():创建文件夹/目录,如果不存在该目录,就创建!
public boolean delete()删除此抽象路径名表示的文件或目录
注意:1)如果我们在写路径的时候,没有带盘符,那么默认是在你当前项目路径下!
2)java中的删除不走回收站
3)delete不能删除该文件夹下有文件或者是文件夹的,删除空文件夹
public boolean renameTo(File dest):重命名
注意:
两个文件的路径一致的情况下:只是改名字
两个文件的路径不一致的情况下:不但改名,并且剪切(当前的盘符路径下)
File类中提供了一些判断功能:
public boolean isAbsolute():判断该路径是否是绝对路径
public boolean isFile()判断此文件是否为一个标准文件
public boolean isHidden():判断此抽象路径表示的文件是否是一个隐藏文件
public boolean canRead():可读
public boolean canWrite():可写
File类的获取功能:(基本获取功能)
public String getAbsolutePath():获取绝对路径
public STring getPath():获取相对路径
public String getName():获取文件或者目录的名称
public long length():获取文件的长度
public long lastModified():返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值
代码:
public static void main(String[] args) throws IOException {
//public File(String pathname):将该路径名称封装成了一个File实例
File f1 = new File("e:\\aaa\\bbb\\ccc");
//public boolean mkdirs():创建文件夹/目录,如果不存在该目录,就创建!
System.out.println(f1.mkdirs());
//public boolean createNewFile():表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException
File f2 = new File("e:\\b.txt");
System.out.println(f2.createNewFile());
//public boolean delete()删除此抽象路径名表示的文件或目录
File f3 = new File("e:\\aaa\\bbb\\ccc");
System.out.println(f3.delete());
//public boolean renameTo(File dest):重命名
File file = new File("e:\\b.txt");
File newFile = new File("e:\\c.txt");
System.out.println(file.renameTo(newFile));
// public String getAbsolutePath():获取绝对路径
File f4 = new File("e:\\b.txt");
System.out.println(f4.getAbsolutePath());
//public STring getPath():获取相对路径
System.out.println(f4.getPath());
//public String getName():获取文件或者目录的名称
System.out.println(f4.getName());
//public long length():获取文件的长度
System.out.println(f4.length());
//public long lastModified():返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值
System.out.println(f4.lastModified());
}
结果:
true
true
true
true
e:\b.txt
e:\b.txt
b.txt
0
0
File类的高级获取功能:
public String[] list():该方法是获取指定盘符下的所有的文件以及文件夹的名称数组
public File[] listFiles():获取指定盘符下的所有文件以及文件夹的File对象数组(常用)
需求:
将c盘中所有的文件以及文件夹的名称获取
代码:
public static void main(String[] args) {
File f = new File("c:\\");
String[] s = f.list();
for(String ss : s){
System.out.println(ss);
}
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
File[] ff = f.listFiles();
if(ff != null){
for(File fff : ff){
String name = fff.getName();
System.out.println(name);
}
}
}
结果:
$Recycle.Bin
Boot
bootmgr
BOOTSECT.BAK
Documents and Settings
Drivers
Intel
OEMSF
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
~~~~~~~~~~~~~~~~~~~~~~~~~~
$Recycle.Bin
Boot
bootmgr
BOOTSECT.BAK
Documents and Settings
Drivers
Intel
OEMSF
PerfLogs
Program Files
Program Files (x86)
ProgramData
Recovery
System Volume Information
Users
Windows
文件名称过滤器
实现FilenameFilter接口(使用匿名内部类的方式,并且重写accept()方法:测定指定文件是否包含在某一文件中)
public File[] listFiles(FileFilter filter)
public String[] list(FilenameFilter filter)(这个文件名称过滤器中常用)
需求:
判断E盘目录下是否有后缀名为.txt的文件,如果有,就输出此文件名称
代码:
public static void main(String[] args) {
File f = new File("e:\\");
String[] list = f.list(new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
File f = new File(dir,name);
boolean b1 = f.isFile();
boolean b2 = name.endsWith(".txt");
return b1 && b2;
//匿名对象的方法
// return new File(dir,name).isFile() && name.endsWith(“.txt”);
}
});
for(String s :list){
System.out.println(s);
}
}
结果:
a.txt
c.txt