------- android培训、java培训、期待与您交流! ----------
FilenameFileter接口
此接口位于java.io包下,若要在File中使用,可以使用
匿名类对象.
示例代码如下:
--------------------------------------------------
File dir = new File("D:\\java");
String[] fls = dir.list(new
FilenameFilter()
{
public boolean accept(File dir, String name)
{
return name.endsWith(".bmp");
}
});
System.out.println("找到符合文件" + fls.length + "个");
for(String name : fls)
{
System.out.println(name);
}
扩展应用1:根据给定的文件夹,可使用递归方法,遍历文件夹及其子文件夹下的所有文件。
File dir = new File("D://java");public void showDir(file dir)
{
File[] files = dir.list();for(int x=0; x<files.length; x++){if(files[x].isDirectory()){showDir(files[x]);} else {System.out.println(files[x]);}}
}
扩展应用2:在指定文件夹/目录下,查找指定后缀名的文件,并建立一个此文件清单列表:
思路:
1、根据指定目录,遍历目录下的所有文件,遍历子文件夹时可使用递归方法;
2、在遍历过程中判断,将符合筛选条件的文件对象添加到List集合中;
3、根据指定存储路径并创建文本文件;
4、遍历List集合,将所有文件对象写入文本文件,生成清单列表。
PrintStream:
字节打印流
PrintStream比其父类或其他字节流方便的地方是:
它可以保证数据原样性,而直接打印输出任何数据类型
println(Xxx x) 将传入的各种基本数据类型进行印输出
write(byte[] buf, int off, int len)
write(int b)
构造函数:
PrintStream(File file)
PrintStream(String filename)
PrintStream(OutputStream out |, boolean autoFlush)
PrintWriter:字符打印流
具备节打印流的功能,专门增强字符打印
构造函数:
PrintWriter(File file)
PrintWriter(OutputStream out |, boolean autoFlush)
PrintWriter(String filename)
常用方法:
print(Xxx x)
println(Xxx x)
write(char[] c |,int off, int len)
write(String s |,int off, int len)
SequenceInputStream: 合并流
顾名思义:将多个流合并成一个流
此类是InputStream的子类,所以具备InputStream的所有方法:
available()
read()
read(byte[] b, int off, int len)
close()
而且它的作用主要是
将多个输入流合并为一个输出流
构造函数:
SequenceInputStream(
Enumeration<? extends InputStream> en) 合并枚举对象中的多个流
SequenceInputStream(InputStream s1, InputStream s2) 合并两个流,依次读取到结束。
应用:文件的合并与分割
拓展:以指定集合中的元素创建一个枚举类对象
//方法1(以Vector创建枚举对象):
Vector<String> v = new Vector<String>();
v.add("abc");
v.add("def");
v.add("hij");
v.add("klm");
Enumeration<String> en = v.elements();
while(en.hasMoreElements()) {
System.out.println(en.nextElement());
}
//方法2(用匿名类创建枚举对象):
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
final Iterator<String> iter = list.iterator();
Enumeration<String> em = new Enumeration<String>(){
@Overridepublic boolean hasMoreElements() {return iter.hasNext();}@Overridepublic String nextElement() {return iter.next();}
};
ObjectOutputStream - 对象的序列化
通过ObjectInputStream流对象将对象
写入到指定流,如:保存对象到指定文件中。
writerObject(Object obj)
ObjectInputStream - 对象的反序列化
通过ObjectInputStream流将对象
读取出来,如:从指定文件中读取数据,返回对象
Object readObject()
对象序列化/反序列化条件:被序列化的对象须实现Serializable接口。
可对序列化的对象指定序列号,以便于识别 serialVersionUID
注意:1.对象中的静态成员(static)不能被序列化;
2.如果需要将成员不被序列化,可用tranzision关键字修饰。