021.2 IO流——字节输出流

内容:流的分类,文件写入(字节输出流),异常处理,获取一个文件夹下的特定文件集合

字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer
由这四个类派生出来的子类名称都是以父类名作为子类名的后缀。如:InputStream的子类FileInputStream,Reader的子类FileReader

###################################################
文件写入,字节输出流

private static final String LINE_SEPARATOR = System.getProperty("line.separator");         //获取系统换行符,用于换行
public static void main(String[] args) throws IOException
{
    System.out.println(LINE_SEPARATOR);
    String s = "花"+LINE_SEPARATOR+"awegadjgaw";
    File dir = new File("abc");
    if(!dir.exists()){
        dir.mkdir();
    }
    FileOutputStream fos = new FileOutputStream("abc\\ai.txt",true);         //true表示可以续写
    fos.write(s.getBytes());            //写入信息
    System.out.println("ok");
    fos.close();

}

 

##########异常处理

public static void main(String[] args)
{
    FileOutputStream fos = null;    //在try外面声明,在finally里面才能关闭
    try{
        fos = new FileOutputStream("abc"+File.separator+"ai.txt");
        fos.write("aiqing".getBytes());
    }
    catch(IOException e){
    }
    finally {
        if(fos != null){             //释放资源前要判断,是否为空
            try{
                fos.close();
            }
            catch(IOException e){
                throw new RuntimeException(e);
            }
        }
    }
}

##########################################练习
获取一个文件夹下的特定文件集合:使用到了过滤器

public static void main(String[] args)
{
    File f = new File("f:"+File.separator+"eclipse_javaCode"+File.separator+
            "day21"+File.separator+"day19");
//        System.out.println(f);
    List<File> list = getList(f,".java");
    for(File file:list){
        System.out.println(file);
    }
}
private static List<File> getList(File dir, String string)
{
    List<File> list = new ArrayList<File>();
    FileFilter filter = new FileFilterByEnding(string);
    getFileList(dir,list,filter);
    return list;
}
private static void getFileList(File dir, List<File> list, FileFilter filter)
{
    //获取文件数组
    File[] files = dir.listFiles();
    //遍历文件数组
    for(File file:files){
        if(file.isDirectory()){
            getFileList(file, list, filter);
        }
        else{
            if(filter.accept(file)){
                list.add(file);
            }
        }
    }
}
含主函数
public class FileFilterByEnding implements FileFilter
{
    private String suffix;
    public FileFilterByEnding(String suffix) {
        super();
        this.suffix = suffix;
    }
    @Override
    public boolean accept(File pathname)
    {
        return pathname.getName().endsWith(suffix);
    }
}
过滤器类

 

posted @ 2018-04-21 20:48 _nbloser 阅读(...) 评论(...) 编辑 收藏