• 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);
        }
    }
    过滤器类
  • 相关阅读:
    在SQL中删除重复记录
    SQL语句生成SQLServer数据字典
    还原数据库时出现的问题
    Active Server Pages 错误 'ASP 0201'
    VS.NET新建项目时出现“两者需要映射到相同的服务器位置”
    cs0016: 未能写入输出文件“c:\windows\microsoft.net\***.dll”错误处理
    Svchost.exe进程详解
    5y5.us
    C# 中返回星期的函数
    怎样用C#实现完整文档打印功能
  • 原文地址:https://www.cnblogs.com/-nbloser/p/8903643.html
Copyright © 2020-2023  润新知