• (三)流-概念和分类


    流的的分类

    流按其流向:

    输入流:外部文件流入内存

    输出流:内存流出到外部文件

    流按数据传输单位;

    字节流  :用来读写8位二进制的字节

    字符流:用来读写16位二进制的字符

    流按功能;

    节点流:用于直接操作目标设备的流   例如:磁盘或一块内存区域

    过滤流:是对一个已存在的流的链接和封装

    File类的案例(迭代一个目录,并把目录结构按层次显示)

    package com.tanlei.cn;
    
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    public class IteratorDirDemo {
      public static void main(String[] args) {
         File file=new File("D:\360");
         IteratorUtil.IteratorDir(file);
    }
    }
    
    class  IteratorUtil{
        private static int level=0;//保存层级数
        public static  void IteratorDir(File file) {
            if(file!=null) {
                //找出递归的出口
                //假设是文件或者是空文件夹
                if(file.isFile()||file.listFiles().length==0) {
                    return;
                }else {
                    File[] files=file.listFiles();
                    //要求是先输出文件夹再输出文件
                    files=sort(files);
                    for(File file2 :files) {
                        //这是一个动态字符串
                        StringBuilder sd=new StringBuilder();
                        if(file2.isFile()) {
                            sd.append(getTab(level));
                            sd.append(file2.getName());
                            
                        }else {
                            sd.append(getTab(level));
                            sd.append(file2.getName());
                            sd.append("\");
                        }
                        
                        System.out.println(sd.toString());
                        
                        //假如是文件夹
                        if (file2.isDirectory()) {
                           level++;//进入目录遍历,层级加1
                           IteratorDir(file2);//递归调用遍历目录的方法
                           level--;//目录层级减一,返回上一级目录,继续打印输出
                        }
                        
                    }
                }
            }
        }
        /**
         * 对file的数组进行先目录后文件的 排序
         *tanlei
         *2018年9月13日 
         *
         */
        private static File[] sort(File[] files) {
            List<File> flList=new ArrayList<File>();
            //先放目录,
            for(File f:files) {
                if(f.isDirectory()) {
                    flList.add(f);
                }
            }
            //存放文件
            for(File f:files) {
                if(f.isFile()) {
                    flList.add(f);
                }
            }
            //把集合中的元素转换成指定大小和指定类型的数组
            return flList.toArray(new File[flList.size()]);
        }
        
        //根据层级数来得到	的个数
        private static String getTab(int level) {
            StringBuilder sBuilder=new StringBuilder();
            for(int i=0;i<level;i++) {
                sBuilder.append("	");
            }
            return sBuilder.toString();
        }
    }
  • 相关阅读:
    MySQL监控全部执行过的sql语句
    Linux之网络编程:时间服务器
    人生哲理 |南怀瑾最经典的50句话
    TCP/IP协议(一)网络基础知识 网络七层协议
    Linux下进程通信之管道
    一个完整的项目管理流程
    Linux编程之select
    (笔记)电路设计(十四)之放大器的应用
    ds18b20采集温度并上报服务器
    java中基于swing库自定义分页组件
  • 原文地址:https://www.cnblogs.com/tanlei-sxs/p/9643201.html
Copyright © 2020-2023  润新知