===========================
IO流:(Input Output)
IO技术主要的作用是解决设备与设备之间的数据传输问题
比如 硬盘--->内存 内存---->硬盘 键盘----->内存
须知:
. 当前路径
..上一级路径
..是返回上一级目录,但是再返回一次上一级目录呢?那么中间就要用一个\表示目录分隔符
而\又是转义符,所以用\\
File:
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
创建 :
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean mkdir()
创建此抽象路径名指定的目录,
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件
删除:
boolean delete()
删除此抽象路径名表示的文件或目录。
void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
判断:
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件
boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
获取:
File getAbsoluteFile()
返回此抽象路径名的绝对路径名形式
String getName()
返回由此抽象路径名表示的文件或目录的名称。
String getPath()
将此抽象路径名转换为一个路径名字符串。
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
long length()
返回由此抽象路径名表示的文件的长度。
String getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间,就是获取系统里的那些属性
文件夹相关的:
static File[] listRoots()
列出可用的文件系统根。
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
就是说返回每一个文件的对象
File[] listFiles(FileFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
注意:
1 如果程序所在的文件与资源文件不在同一个盘下是不能写相对路径的
2 renameTo方法,如果源文件和目标文件在同一个目录,那么是重命名,文件和文件夹都可以
但是如果不在同一个目录,那么就是剪贴,把源文件剪贴到目标文件,只有文件可以,文件夹不可以
3 mkdir方法只能创建一级目录
4 delete能文件和删除空文件夹,如果想删除文件夹里带有文件的,必须要先删除文件夹里的文件,可以用递归
5 deleteOnExit是在虚拟机退出的时候才删除文件的,
6 list和listFiles方法能输出隐藏的文件和目录
7 listFiles使用了FileFilter(文件筛选器)的时候,listFiles的内部会自动调用accpet方法并传入每个File对象
创建文件和目录,重命名,剪贴文件
//返回此抽象路径名的绝对路径名字符串,抽象路劲名指的是我们从File构造函数传入的,并不判断是不是有这个文件
File file1=new File("D:\\a.txt");
System.out.println("当前路径 "+file1.getAbsolutePath());
//创建一个文件,会有一个异常
File file3=new File("D:\\a.txt");
System.out.println(file3.createNewFile());
//创建一个名叫a的目录,只能是最后一级目录,就是说只能创建一级目录
File file4=new File("D:\\a");
System.out.println(file4.mkdir());
//用这个就可以创建多级目录
File file5=new File("D:\\a\\bb");
System.out.println(file5.mkdirs());
//重命名文件
File file7=new File("D:\\傻逼.txt");
System.out.println(file3.renameTo(file7));
//不同目录下只能剪贴文件,不能剪贴文件夹,同一目录下可以重命名文件名和文件
File file9=new File("C:\\cb.txt");
System.out.println(file7.renameTo(file9));
删除文件
File file10=new File("D:\\a.txt");
System.out.println(file10.createNewFile());
Thread.sleep(3000);
//删除文件
System.out.println(file10.delete());
File file11=new File("D:\\a\\b");
System.out.println(file11.mkdirs());
File file12=new File("D:\\a");
System.out.println(file12.delete());//删除失败,因为里面有文件
//虚拟机终止时,请求删除文件
File file13=new File("D:\\a");
file13.deleteOnExit();
判断的方法
File file14=new File("D:\\a.txt");
System.out.println(file14.createNewFile());
File file15=new File("D:\\a.txt");
System.out.println(file15.isFile());
System.out.println(file15.isHidden());
System.out.println(file15.exists());
System.out.println(file15.isDirectory());
System.out.println(file15.isAbsolute());//是否是绝对路径
File file16=new File("..\\..\\..\\a.txt");
System.out.println(file16.isAbsolute());//是否是相对路径
获取文件的方法
File file17=new File("D:\\a.txt");
System.out.println(file17.getName());//就是获取我们自己在file里写的 文件名,不判断文件是否存在
System.out.println(file17.getPath());//就是获取我们自己在file里写的 文件路径,不判断文件是否存在
File file18=new File("..\\..\\..\\a.txt");
System.out.println(file18.getAbsolutePath());//这个还好,会加一个项目所在路径,但是后面有是加上我们写的内容,不判断文件是否存在
System.out.println(file18.getAbsoluteFile());//这个和上面是一样的
System.out.println(file17.getParent());//就是获取我们自己在file里写的 文件的上一级目录,不判断文件是否存在
System.out.println(file17.length()); //获取文件的长度
Date date1=new Date(file17.lastModified()); //获取文件最后一次修改时间
SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("YYYY\\MM\\dd hh:mm:ss");
System.out.println( simpleDateFormat1.format(date1));
对文件夹的操作,遍历文件夹
class Test
{
public static void main(String[] args) throws IOException, InterruptedException
{
//获取所有驱动器的
File[] file19 = File.listRoots();
for (File string1 : file19)
{
System.out.println(string1);
}
//获取驱动器下的所有文件和文件夹名称,能获取隐藏的文件
File file20 = new File("D:\\");
String[] string2 = file20.list();
for (String temp : string2)
{
System.out.println(temp);
}
System.out.println("=======================================");
//获取驱动器下的所有文件和文件夹的对象,能获取隐藏的文件
File file21 = new File("D:\\");
//传入筛选器
File[] file22 = file21.listFiles(new test1());
for (File temp : file22)
{
System.out.println(temp.getName());
}
}
}
// 下面的FileFilter(文件筛选器)的使用
class test1 implements FileFilter
{
public boolean accept(File pathname)
{
if (pathname.getName().endsWith("") && pathname.isDirectory())
{
// 如果不加&&pathname.isFile(),那么如果有一个文件夹叫a.txt那也遍历出来了,我们只需要a.txt的文件
return true;
} else
{
return false;
}
}
}