博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(三)流-概念和分类
阅读量:6124 次
发布时间:2019-06-21

本文共 2412 字,大约阅读时间需要 8 分钟。

流的的分类

流按其流向:

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

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

流按数据传输单位;

字节流  :用来读写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
flList=new ArrayList
(); //先放目录, 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()]); } //根据层级数来得到\t的个数 private static String getTab(int level) { StringBuilder sBuilder=new StringBuilder(); for(int i=0;i

 

转载于:https://www.cnblogs.com/tanlei-sxs/p/9643201.html

你可能感兴趣的文章
一步一步带你认识MVP+Retrofit+Rxjava并封装(二)
查看>>
Binder基础业务分析
查看>>
[译] 虚拟现实是如何改变用户体验的:从原型到设备的设计
查看>>
导航控制返回到指定的页面
查看>>
geodocker-geomesa安装指南
查看>>
恶意用户识别?——Java 层反模拟器、反Hook、反多开技巧
查看>>
关于坚持的一些最近感想
查看>>
Google x Udacity 两门免费新课全球首发,还不快来体验下?
查看>>
Android开发技巧之xml tools属性详解
查看>>
你应该知道的柯里化
查看>>
浏览器兼容性问题
查看>>
Android小知识-Android中的缓存策略(内存缓存和磁盘缓存)
查看>>
机器学习应用在几种形态下落地的问题和参考架构
查看>>
利用 GitHub 以及 Travis-CI 展示带自己域名的 Vue 页面
查看>>
单元测试
查看>>
Spring Boot系列十七 Spring Boot 集成 websocket,使用RabbitMQ做为消息代理
查看>>
关于JavaScript的内存机制
查看>>
【译】ES2018 新特性:Rest/Spread 特性
查看>>
js 构造函数 原型(扩充类型的功能)
查看>>
区域卷积神经网络(R-CNN)笔记
查看>>