IO流----File类与Properties集合
1.概念:用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。File对象可以作为参数传递给流的构造函数。
2.创建File对象
Eg:
public static voi consMethod()
{
File f1=new File(“c:\\abc\\a.txt”);//将a.txt封装成file对象,绝对路径
File f2=new File(“c:\\abc”,”b.txt”);//将目录与文件分成两个参数传递
File d=new File(“c:\\abc”);
File f3=new File(d,”c.txt”);//这种写法与第二种效果相同
Fil f4 =new File( “c:”+File.separator+”abc\\a.txt”);//File.separator跨平台的分隔符
}
3.File类常见方法:
3.1创建
boolen createNewFile()//在指定位置创建文件,如果该文件已经存在,则不创建,
返回false.和输出流不一样,输出流对象创建文件,如果文件已经存在,则会覆盖。
boolean mkdir()//创建文件夹
boolean mkdirs()// 创建多级文件夹
3.2删除
boolean delete();//删除失败返回false
void deleteOnExit();//在程序退出时删除指定文件
3.3判断
boolean exists()//文件是否存在
isFile();//是否是一个标准文件
isDirectory();//是否是一个目录
isHidden();//是否是一个隐藏文件
isAbsolute()//是否为绝对
3.4获取信息
getName();//返回文件名
getAbsolutePath()//返回绝对路径
lastModified()//最后修改时间
getPath()//返回路径
getParent()//返回绝对路径中的父目录,如果获取的是相对路径,返回为null.
如果相对路径有上一层目录那么该目录就是返回结果
3.5.调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
4.接口FilenameFilter,实现此接口的类实例可用于过滤器文件名。
Eg:
File dir=new File("C:\\");//定义File类对象dir
//过滤C盘目录下的.java文件
File [] files=dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return name.endsWith(".java");}
});
5.删除一个带内容的目录
删除原理:在window中,删除目录从里面往外删除的。
Eg:package cn.itcast.day1;
import java.io.File;
public class RemoveDir {
public static void main(String[] args) {
// TODO Auto-generated method stub
File dir=new File("c:\\testdir");//创建File类对象dir
removedir(dir);//调用删除目录方法
}
//删除目录
public static void removedir(File dir)
{
File []files=dir.listFiles();//列出目录下所有文件
//遍历目录下文件
for(int i=0;i<files.length;i++)
{
//如果文件是非隐藏或者是目录
if(!files[i].isHidden()&&files[i].isDirectory())
removedir(files[i]);//进行递归操作
else
System.out.println(files[i].delete());//删除文件
}
dir.delete();//删除目录
}
}
6.Properties:Properties是hashtable的子类,它具备map集合的特点,而且它里面存储的键值对都是字符串。是集合中和IO技术相结合的集合容器。该对象的特点:可以用于键值对形式的配置文件。在加载数据时,需要数据有固定的格式:键=值
Eg:
Properties pro=new Properties();//定义一个集合对象pro
//往pro中添加元素
pro.setProperty("123", "we");
pro.setProperty("we", "34");
//用stringPropertyNames()方法,将Properties集合中键存入到Set集合
Set<String> set=pro.stringPropertyNames();
//遍历集合
for(String name:set)
{
//输出元素的键与值
System.out.println(name+pro.getProperty(name));
}
7.用Properties特有方法load()将流中数据加载到集合Peoperties中。
Eg:
FileInputStream fis=new FileInputStream(“info.txt”);//定义一个输入流fis
Properties pt=new Properties();//定义一个集合对象pt
Pt.load(fis);//将流加载到集合中