IO流:
IO流用来处理设备之间的数据传输
Java对数据的操作是通过流(系统资源)的方式
Java用于操作流的对象都在java.io包中
IO:用于处理设备上的数据技术。设备:内存,硬盘,光盘
流:系统资源,windows系统本身就可以操作设备,各种语言只是使用系统平台上的这个资源
并对外提供了各种语言自己操作的功能,这些功能最终调用的是系统资源
使用完资源一定要 释放。
*********File***************
将一个具体的路径封装成了File对象。可以封装存在的文件或目录,
也可以封装不存在文件或目录。
File file= new File("c:\\1.txt");
File file= = new File("c:\\","1.txt");
File f = new File("c:"+File.separator+"abc"+File.separator+"1.txt");
**创建文件可以没有扩展名
创建文件夹 boolean b =file.mkdir();
创建多级目录:file.mkdirs();
**获取文件夹下的所有文件:
File dir = new File("c:\\");
String[] names = dir.list(); // 文件包括隐藏文件,只获取名称
File[] files =dir.listFiles(); // 列举文件对象
for(File f:files){
System.out.println(f.getName()+"..."+f.length());
}
***文件过滤器***********
获取指定目录下的指定类型文件:
list方法:
File dir= new File("c:\\");
FilenameFilter filter= new FilterBySuffix(".class");// 后缀名是class
filter = new FilterByContain("Demo"); //名称有Demo的文件
String[] files=dir.list(filter);
listFiles方法:
FileFilter filter = new FilterBysuffix();
File[] files = dir.listFiles(filter);
*********递归:函数自身调用自身。函数内部又使用到了该函数功能
什么时候使用?
功能被重复使用,但是每次该功能使用参与运算的数据不同时,可以考虑递归方式解决。
使用时,一定要定义条件 。
注意递归次数过多,会出现栈内存溢出。
***删除一个带内容的文件夹,必须从里往外删
public static void deleteDir(File dir){
File dir = new File("E:\\test");
File[] files= dir.listFiles();
for(File file:files){
if(file.isDirectory())
{ deleteDir(file);
}else{
System.out.println(file+":"+file.delete());
}
}
System.out.println(dir+":"+dir.delete());
}
io流:
** 流按操作数据分为两种:字节流与字符流
流按流向分为:输入流(读),输出流(写)
字节流的抽象基类:
InputStream , OutStream
***** FileOutputStream ************
1,创建字节输出流对象,用于操作文件,在对象初始化时,必须明确数据存储的目的地
输出流所关联的目的地,如果不存在,会自动创建,如果存在,则覆盖。
FileOutputStream fos = new FileOutputStream("tempfile\\fos.txt");