精华内容
下载资源
问答
  • 和io流结合使用的集合类
    2020-04-03 21:41:12

    Properties:属性集合类,是一个可以和IO流结合使用的集合类
    Properties:可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串
    是Hashtable的子类,说明是一个Map集合
    此集合没有泛型

    1.使用Hashtable的功能玩一下:

    
    public class PropertiesDemo {
        public static void main(String[] args) {
            Properties pr=new Properties();
    
            pr.put("01","hello");
            pr.put("02","world");
    
            System.out.println(pr);
    
            Set<Object> set=pr.keySet();
            for(Object key:set){
                Object value=pr.get(key);
                System.out.println(key+"="+value);
            }
    
        }
    }
    
    

    结果:
    {01=hello,02=world}
    01=hello
    02=world .

    2.特有功能:

    *public Object setProperty​(String key, String value)//添加元素

    • public String getProperty​(String key)//获取元素
    • public Set stringPropertyNames​()//获取所有键的集合

    代码测试:

    
    public class PropertiesDemo2 {
        public static void main(String[] args) {
            Properties pr=new Properties();
    
            pr.setProperty("01","hello");
            pr.setProperty("02","world");
    
            Set<String> keys=pr.stringPropertyNames();
            for(String key:keys){
                String value =pr.getProperty(key);
                System.out.println(key+"="+value);
            }
        }
    }
    
    

    结果:
    01=hello
    02=world

    2.1特有功能:

    • public void load​(Reader reader) //从文件读取数据到集合
    • public void store​(Writer writer, String comments) //把集合中的数据写入文件
    
    public class IoPropertiesDemo {
        public static void main(String[] args) throws IOException {
        	//加载
            load();
    		//写入
            Store();
    
        }
    
        private static void Store() throws IOException{
            Properties pr=new Properties();
            pr.setProperty("01","蝇");
            pr.setProperty("02","蝇");
            pr.setProperty("03","蝇");
    
            Writer w=new FileWriter("t.txt");
            //将集合的元素以键值对形式存储到文件
            pr.store(w,"null");
            w.close();
        }
    
        private static void load() throws IOException { //文件的数据必须是键值对形式
            Reader r = new FileReader("t.txt");
    
            Properties pr = new Properties();
            //加载t.txt文件到集合
            pr.load(r);
            r.close();
    
            System.out.println(pr);
        }
    }
    
    
    更多相关内容
  • Java中的集合IO流结合使用01写入

    千次阅读 2019-04-16 21:45:11
    下面我们使用java语言简单的了解一下集合IO流是如何结合使用的。 集合这里介绍到的是ArrayList集合以及缓冲流BufferedWriter。 BufferedWriter格式: 1、 导包(快捷键Ctrl+shift+o) 2、 定...

    ArrayList<>与BufferedWriter写入

    开发工具与关键技术:java,IO流,集合
    作者:张启翔
    撰写时间:2019-04-16
    

    下面我们使用java语言简单的了解一下集合与IO流是如何结合使用的。
    集合这里介绍到的是ArrayList集合以及缓冲流BufferedWriter。

    BufferedWriter格式:
    1、 导包(快捷键Ctrl+shift+o)
    2、 定义一个集合那么就创建ArrayList类
    3、 使用ArrayList类里的方法add添加元素
    4、 创建FileWriter对象
    5、 将FileWriter对象作为参数传进BufferedWriter构造方法里
    6、 这时调用write()方法将集合的数据写进文件中
    7、 使用close()方法关闭流

    例子:定义一个集合用来存储多个字符串,并添加多个字符串数据,然后将集合的值写进写进文件中,并一个字符占一行

    //导包
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    public class Demo02Practice {
    //开始
    	public static void main(String[] args) {
    //定义集合
    		ArrayList<String> list =new ArrayList<>();
    //添加数据到集合中
    		list.add("我叫周星驰");
    		list.add("今年25岁");
    		list.add("是香港人");
    		list.add("我是个演员");
    		list.add("当然,这只是想象");
    		list.add("因为25岁的周星驰已经回不来了");
    		list.add("也就是说我们都已经长大了");
    		list.add("再也不是那个每天尿的小孩了");
    		
    		// try块;抛异常(可以点击提示抛出异常)
    		try {
    			//创建BufferedWriter对象
    			BufferedWriter buf =new BufferedWriter(new FileWriter("introduce.txt"));
             	 //for循环出每一个集合中的字符串
    			for (int i = 0; i < list.size(); i++) {
    					String str =list.get(i);//str接收当前集合的数据,get为查询,i为索引 格式get(index)
    					buf.write(str);//wrigte是方法,有5种重载方式
    					buf.newLine();//BufferedWriter 的专有方法,换行
    				}		
    			    //当不使用for循环时,可以使用这个方法,但麻烦,还要知道具体有多少行	
    			    //buf.write(list.get(0)); 
    			    //buf.write(list.get(1));
    			    //buf.write(list.get(2)); 
    			    //buf.write(list.get(3)); 
    			    //buf.write(list.get(4));
    			    //buf.write(list.get(5));
    			    //………
    			buf.close();//每次使用完IO都需要关闭流
    			
    		} catch (IOException e) {//catch块
    			e.printStackTrace();
    		}
    	}
    }
    

    效果图:
    在这里插入图片描述

    展开全文
  • Java中的集合IO流结合使用02读取

    千次阅读 2019-04-17 21:48:44
    下面我们使用java语言简单的了解一下集合IO流是如何结合使用集合这里介绍到的是ArrayList集合以及缓冲流的读取文件BufferedReader。 BufferedReader格式: 1、 导包(快捷键Ctrl+shift+o...

    ArrayList<>与BufferedReader读取

    开发工具与关键技术:java,IO流,集合
    作者:张启翔
    撰写时间:2019-04-16
    

    下面我们使用java语言简单的了解一下集合与IO流是如何结合使用。
    集合这里介绍到的是ArrayList集合以及缓冲流的读取文件BufferedReader。

    BufferedReader格式:
    1、 导包(快捷键Ctrl+shift+o)
    2、 定义一个集合那么就创建ArrayList类
    3、 创建FileReader对象
    4、 将FileReader对象包装成为缓冲BufferedReader
    5、 声明变量接收将要在循环中产生的数据
    6、 使用循环遍历,循环中将数据使用add方法添加到集合中。
    7、 这时调用read()方法将集合的数据写进文件中
    8、 使用close()方法关闭流

    例子:将文件中的字符串读取到集合中,并且每行存储一个字符串

    	//导包
    import java.util.ArrayList;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    public class BufferedReaderDemo {
    			//开始
    		public static void main(String[] args) throws IOException {
    				//创建集合
    			ArrayList<String> list = new ArrayList<>();
    				//声明一个FileReader的同时声明了一个BufferedReader,然后将FileReader作为参数传进
    			BufferedReader buf = new BufferedReader(new FileReader("introduce.txt"));
    				//声明变量接收数据
    			String the;
        			//使用while循环遍历读取文件
        			//readLine()是BufferedReader特定的方法,读取整一行,
        			//因为传进来的buf是地址值,所以要将,地址值获取的每一行赋值给the
        			//然后判断the是否等于null,因为是String所以是null。如果是int就是-1
    			while ((the = buf.readLine())!=null) {
        				//这里尝试输出一下buf,结果就是地址值
        				//如果像这样直接把BufferedReader输出就会输出一个地址值,而不是地址里面文件的数据,
        				//通俗点就是说你找到你朋友的家里,可以别没有找到人,你要进屋子里面才能看到你的朋友
    				System.out.println(buf);
    					//每次循环就将读取的数据添加到集合中
    				list.add(the);
    			}
    				//结束循环后,分隔一下上面输出的地址值
    			System.out.println("============");
    				//每次使用IO流都需要关闭一下,要不然会一直在后台运行,直到关闭JVM
    			buf.close();
    				//最后查看一下集合是否有接收到。
    			for (int i = 0; i < list.size(); i++) {
    				//get(index) get是查询小括号的是索引
    				System.out.println(list.get(i));
    				
    			}
    			
    		
    }
    

    效果图:

    在这里插入图片描述

    展开全文
  • Properties集合和IO流结合之案例

    千次阅读 2021-11-10 10:08:09
    Properties是一个Map体系的集合类,他的作用就是可以将集合里面的键值对保存到中,或者从中加载到集合中。 我们根据一个案例来看看他的具体用途吧!!! 根据这个界面,大家肯定就知道我们的案例要做什么了吧...

    简介

    Properties是一个Map体系的集合类,他的作用就是可以将集合里面的键值对保存到流中,或者从流中加载到集合中。

    我们根据一个案例来看看他的具体用途吧!!!
    请添加图片描述
    根据这个界面,大家肯定就知道我们的案例要做什么了吧,对没错就是一个猜数的一个小程序,这个小程序呢一共主要分为界面、账号登录、猜数、密码修改、充值等模块…

    下面我们具体的来看看这些模块吧!

    界面
    主要用了输出语句、while循环、switch条件判断语句、以及我们的方法调用来实现最后的一个展现功能。

    示例代码:

    //界面
        public static void menu() throws InterruptedException, IOException {
            while (true) {
                System.out.println("***********欢迎来到猜数小程序***********");
                System.out.println("***1.登 录 账 号---->开 始 猜 数 游 戏***");
                System.out.println("***2.修 改 密 码                    ***");
                System.out.println("***3.猜 拳 小 游 戏                 ***");
                System.out.println("***4.赞助作者(支持微信和支付宝)        ***");
                System.out.println("***5.退 出 游 戏                    ***");
                System.out.println("*********(内测小程序,功能未完善)*********");
                System.out.println("请输入您的选择:");
                Scanner sc = new Scanner(System.in);
                int i = sc.nextInt();
                if (i > 0 && i <= 5) {
                    switch (i) {
                        case 1:
                            loginView();
                            break;
                        case 2:
                            System.out.println("修改密码功能");
                            update();
                            break;
                        case 3:
                            System.out.println("猜拳游戏模块!");
                            fingerGuessingGame();
                            break;
                        case 4:
                            System.out.println("请稍等:");
                            TSUtility.loadSpecialEffects();
                            new PayView();
                            break;
                        case 5:
                            System.out.println("是否退出?y/n");
                            String s = sc.next();
                            switch (s.charAt(0)) {
                                case 'y':
                                    System.out.println("欢迎下次再来");
                                    return;
                                default:
                                    System.out.println("请继续开始!");
                            }
                            break;
                    }
                } else {
                    System.out.println("输入有误,请重新输入!");
                }
            }
        }
    

    登录注册
    这个模块主要是对账号是否存在,如果存在直接登录,否则注册账号(注册的账号密码我们用Properties集合保存到我们的流中,以便下次直接登录),进入游戏之前我们得判断免费次数(默认设置的免费次数为1次)和金额(50元一次,判断金额是否>=50)是否可以玩猜数小游戏,当两个条件都不满足的时候就要进行充值才能继续游戏。

    示例代码:

    public static void loginView() throws IOException, InterruptedException {
            //控制循环
            boolean b = true;
            //创建集合
            Properties prop = new Properties();
            File file = null;
            File file1 = null;
    
            while (b) {
                System.out.println("请输入账号和密码");
                System.out.print("账号:");
                Scanner sc = new Scanner(System.in);
                String userName = sc.next();
                //文件路径初始化
                file = new File("E:\\JAVAWork", userName);
    
                //判断文件是否存在
                if (!file.exists()) {
                    System.out.println("账户不存在是否注册账号y/n");
                    //使用工具类判断用户输入
                    char c = TSUtility.readConfirmSelection();
                    if (c == 'Y') {
                        System.out.print("账号为:");
                        String userName1 = sc.next();
                        //定义文件路径
                        file1 = new File("E:\\JAVAWork", userName1);
                        file1.createNewFile();//创建文件
    
                        System.out.print("密码为:");
                        String pw = sc.next();
    
                        //密码存到集合、设置其他初始值
                        prop.setProperty("Password", pw);
                        prop.setProperty("money", String.valueOf(money));
                        prop.setProperty("count", String.valueOf(count));
                        FileWriter fw = new FileWriter(file1);
                        //集合中的数据保存到文件
                        prop.store(fw, "------UserInfo------");
                        fw.close(); //释放资源
                        //使用工具类,调用延时方法
                        TSUtility.loadSpecialEffects();
                        System.out.println("注册成功!");
                    } else {
                        System.out.println("已取消注册账号!");
                        b = false; //结束循环
                    }
                } else {
                    file1 = new File("E:\\JAVAWork", userName);//?
                    System.out.print("密码:");
                    String pw = sc.next();
                    //文件中的内容读取到集合
                    FileReader fr = new FileReader(file);
                    prop.load(fr);
                    fr.close();
                    //判断密码是否正确
                    if (prop.get("Password").equals(pw)) {
                        System.out.println(userName + "欢迎你! " + "您目前余额为:"
                                + prop.get("money") + "元,免费次数为:" + prop.get("count"));
                        b = false;
                        //猜数小游戏,开始玩游戏
                        String count = prop.getProperty("count");
                        int number = Integer.parseInt(count);
                        String money = prop.getProperty("money");
                        int money1 = Integer.parseInt(money);
                        if (number == 0 && money1 < 50) {
                            //如果到了,给出提示,游戏已结束,想玩请充值(www.itcast.cn)
                            System.out.println("游戏已结束,想玩请充值(www.itcast.cn)");
                            System.out.println("是否充值y/n");
    
                            recharge(sc, prop, money1, number, file1);
    
                        } else if (number > 0) {
                            //如果次数大于0的时候,就用次数
                            file1 = new File("E:\\JAVAWork", userName);//?
    
                            Game.start();
                            number--;
                            prop.setProperty("count", String.valueOf(number));
                            FileWriter fw1 = new FileWriter(file1);
                            prop.store(fw1, null);
                            fw1.close();
    
                        } else if (number == 0 && money1 >= 50) {
                            //如果使用次数为零,判断是否有钱继续游戏
                            file1 = new File("E:\\JAVAWork", userName);//?
                            Game.start();
                            money1 -= 50;
                            prop.setProperty("money", String.valueOf(money1));
                            FileWriter fw2 = new FileWriter(file1);
                            prop.store(fw2, null);
                            fw2.close();
                        }
                    } else {
                        System.out.println("密码错误!");
                    }
                }
            }
        }
    

    展示:
    请添加图片描述
    请添加图片描述

    充值模块
    充值有对应的免费次数相送,充的越多送的就越多(这里我们需要对金额和次数用Properties集合存储到我们的文本中)👇
    请添加图片描述

     //充值
        public static void recharge(Scanner sc, Properties properties, int money, int number, File f1) throws IOException {
           
            String m1 = "money";
            String c1 = "count";
            System.out.println("余额不足,是否充值y/n");
            switch (sc.next().charAt(0)) {
                case 'y':
                    System.out.println("***      充值系统       ***");
                    System.out.println("***      充一百送5次     ***");
                    System.out.println("***     充两百送12次     ***");
                    System.out.println("***     充三百送18次     ***");
                    System.out.println("***   充五百及以上送31次  ***");
                    System.out.println("***      充值系统       ***");
                    System.out.println("请输入您的充值金额:");
                    int recharge = sc.nextInt();
                    if (recharge >= 100 && recharge < 200) {
                        number = number + 5;
                        money = money + recharge;
                        properties.setProperty(c1, String.valueOf(number));
                        properties.setProperty(m1, String.valueOf(money));
                    } else if (recharge >= 200 && recharge < 300) {
                        number = number + 12;
                        money = money + recharge;
                        properties.setProperty(c1, String.valueOf(number));
                        properties.setProperty(m1, String.valueOf(money));
                    } else if (recharge >= 300 && recharge < 500) {
                        number = number + 18;
                        money = money + recharge;
                        properties.setProperty(c1, String.valueOf(number));
                        properties.setProperty(m1, String.valueOf(money));
                    } else if (recharge >= 500) {
                        number = number + 31;
                        money = money + recharge;
                        properties.setProperty(c1, String.valueOf(number));
                        properties.setProperty(m1, String.valueOf(money));
                    } else if (recharge <= 0) {
                        System.out.println("请输入正确的金额");
                    } else {
                        money = money + recharge;
                        properties.setProperty(m1, String.valueOf(money));
                    }
                    FileWriter fw = new FileWriter(f1);
                    properties.store(fw, null);
                    fw.close();
                    System.out.println("充值成功");
                    break;
                default:
                    System.out.println("余额不足请充值后玩");
            }
        }
    

    展示:

    请添加图片描述
    猜数模块
    这个模块是比较简单的,只需对我们录入的数字进行判断即可

     public static void start(){
            Random r = new Random();
            int number = r.nextInt(100)+1;
            while(true){
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入你要猜的数字:");
                int guessNumber = sc.nextInt();
                if(guessNumber > number){
                    System.out.println("你猜的数字"+guessNumber+"大了");
                }else if(guessNumber < number){
                    System.out.println("你猜的数字"+guessNumber+"小了");
                }else{
                    System.out.println("恭喜你猜中了");
                    break;
                }
            }
    

    展示:
    请添加图片描述
    这个案例需要我们灵活的掌握Properties集合和流之间的联系,想要了解一些细节和界面上其他功能实现的可以自行下载!!!

    链接: https://pan.baidu.com/s/1KEQGmXSpr5twzjTSafMu4Q
    提取码: bkce

    展开全文
  • 案例: package IO; import java.io.FileWriter; import java.io.IOException; import java.util.Properties; ... java.util.Properties集合,extends Hashtable<k,v> ipmlements Map&...
  • 运用集合IO流编写简单的学生信息管理系统,实现增删改查操作 import java.text.NumberFormat; public class Info { private int stu_id; private String stu_name; private String stu_sex; private...
  • 文章目录1、什么是Stream1、认识Stream2、Stream流和...Stream、IntStream、LongStreamDoubleStream是对象上的以及原始int、longdouble类型。在几个方面与集合不同: 没有存储。 不是存储元素
  • 笔记20-IO流&Properties集合

    万次阅读 2021-06-28 21:40:33
    1.IO流案例 1.1集合到文件数据排序改进版【应用】 1.1.1案例需求 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件 格式:姓名,语文成绩,数学成绩,英语成绩 举例:...
  • Java基础IO流(案例源码)【六】

    万次阅读 2021-07-16 16:31:39
    1.IO案例 1.1集合到文件数据排序改进版【应用】 1.1.1案例需求 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件 格式:姓名,语文成绩,数学成绩,英语成绩 举例:...
  • 毕竟,一切本地文件,一切网络传输都是IO流,最近也遇到不少IO流的问题,发现IO流跟File类结合后能催生诸多有趣的需求,说不定自己写的一个小demo以后真的能帮自己整理一下烦乱的DEF盘呢。 按类型整理文件 定义一...
  • 7、map集合和IO流

    千次阅读 2015-04-02 20:25:06
    Map:一次添加一对元素。...Map也称为双列集合,Collection集合称为单列集合。 其实map集合中存储的就是键值对。  map集合中必须保证键的唯一性。  常用方法: 1,添加。 value put(key,value):返回
  • 六、集合 1. 理解:集合就是存储对象最常用的一种方式,只用于存储对象,长度是可变的  与数组的区别:都是容器,数组也可以储存对象,但长度是固定的,集合是可变的  数组中可以存储基本数据类型,集合只能...
  • 其实主要是因为I/O的分类实在是太多了,一会是输入,一会是输出,还有字节、字符、文件输入,文件输出,缓冲.....乱七八糟一大堆,光是这些英文单词把人背的脑袋都大了。 正因为如此,面试官就喜欢...
  • import java.util.Map.Entry; import java.util.Properties;...是一个可以和IO流结合使用集合类。 * Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 *
  • 史上最骚最全最详细的IO流教程,小白都能看懂!

    万次阅读 多人点赞 2019-10-31 08:54:47
    在博主认为真正懂IO流的优秀程序员每次在使用IO流之前都会明确分析如下四点: > (1)明确要操作的数据是数据源还是数据目的(也就是要读还是要写) (2)明确要操作的设备上的数据是字节还是文本 (3)明确数据...
  • } *PropertiesIO流的结合使用 和IO流结合使用的常用方法: 方法名 作用 void load(InputStream isStream) 从输入字节流读取属性列表(键元素对) void load(Reader reader) 从输入字符流读取属性列表(键元素...
  • Java文件操作、IO流

    千次阅读 2022-04-04 21:00:44
    IO流3.1 IO流概述分类3.2 字节流写数据3.3 字节流写数据的三种方式3.4 字节流写数据的两个小问题3.5 字节流写数据加异常处理3.6 字节流读数据(一次读一个字节数据)3.7 字节流复制文本文件3.8 字节流读数据(一次读...
  • IO流的基本使用

    千次阅读 2016-06-30 16:37:23
    IO流 |--字节流 |--字节输入流 InputStream int read():一次读取一个字节 int read(byte[] bys):一次读取一个字节数组 |--FileInputStream |--BufferedI
  • Java io流学习

    万次阅读 2022-04-12 14:55:21
    1.1 File概述构造方法 概述: 它是文件目录路径名的抽象表示 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。 将来是要通过具体的操作把这...
  • 文章目录IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合))相关知识总结前言一、File1.File的概述构造方法2.File创建功能3.File...
  • Java 集合/IO流/多线程基础

    千次阅读 2019-03-05 10:02:32
    一、集合: 1. 集合框架: 1)Collection (1)List:有序的,有索引,元素可重复。 (add(index, element)、add(index, Collection)、remove(index)、set(index,element)、get(index)、subList(from, to)、...
  • 【JavaSE基础】10-IO流

    千次阅读 2022-05-01 23:59:06
    逃不掉的异常捕获处理,常见的 IO 是实现,File 以及 Properties
  • IO流作业及答案

    千次阅读 2020-04-05 15:56:50
    2.Java IO流可以分为 处理流两大,其中前者处于IO操作的第一线,所有操作必须通过他们进行。 3.输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据, 方法给程序提供了一个从输入流中读取数据...
  • IO流版的图书管理系统,附源码,快进来看看吧!长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐。所以,我们需求设计一个图书管理系统来方便学生的借书图书馆管理书籍。
  • IO流的小细节(很小很细很重要)

    千次阅读 2020-01-04 17:57:16
    Java中的IO流(一): https://blog.csdn.net/Veer_c/article/details/103833045 Java中的IO流(二): https://blog.csdn.net/Veer_c/article/details/103833423 Java中的IO流(三): ...
  • E06_IO复习.pdf

    2021-11-02 11:37:44
    E06_IO复习.pdf
  • Java IO流

    千次阅读 2016-04-15 23:25:18
    Java IO流         Java IO简介 概述 流是一组有顺序的,有起点终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更...
  • java io流最详解

    千次阅读 2016-11-13 20:31:38
    初学Java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错...io 比较基本的一些处理,除此之外我们还会提到一些
  • 用JAVA实现图书管理系统(IO流

    千次阅读 多人点赞 2021-10-19 10:59:58
    长期以来,人们使用传统的人工方式管理图书馆的日常业务,其操作流程比较烦琐。在借书时,读者首先将要借的书借阅证交给工作人员,然后工作人员将每本书的信息卡片读者的借阅证放在一个小格栏里,最后在借阅证...
  • 概述:字符流是可以直接读写字符的IO流。 字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出。 字符输入流(FileReader)概述: FileReader的read()方法可以按照字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,995
精华内容 16,398
关键字:

和io流结合使用的集合类