java-----IO流之缓冲流

一、转换流

                  作用:实现字节流字符流间的转换

                             解决中文乱码问题

            InputStreamReader:字节字符转换输入流,将字节输入流转换为字符输入流      使用的是默认的GBK编码

InputStreamReader reader = new InputStreamReader(newFileInputStream(newFile("文件地址")),"UTF-8");     
//"UTF-8"也可以写成别的编码格式,也可以不写,默认GBK

            outputStreamWriter:字符转换输出流,将内存中的字符转成字节保存到硬盘中。

OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file,true), "utf-8");                 
//写文件时如果不想覆盖原文件内容,加true  不写默认false

二、缓冲流

           作用:主要是为了增强基础流的功能而存在的,提高了流的工作效率【读写效率】 和加byte数组读取数据本质一样

                      但缓冲流效率更高。

           BufferedInputStream:

//实例化一个File对象
File file = new File("文件地址");
		
//实例化一个缓冲字节输入流的对象
BufferedInputStream input = new BufferedInputStream(new FileInputStream(file));

           BufferedOutputStream:

File file = new File("文件地址");
		
//实例化换种字节输出流 
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file));

            BufferedReader:

//实例化FIle对象
File file = new File("文件地址");
		
//实例化缓冲字符流的对象
BufferedReader reader = new BufferedReader(new FileReader(file));

            BufferedWriter:

// 实例化FIle对象
File file = new File("文件地址");
//实例化缓冲字符输出流
BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));

三、内存流

          输入和输出都是从文件中来的,当然,也可将输出输入的位置设置在内存上。

           ByteArrayInputStream:将内容写入到内存中,是Inputstream的子类

           ByteArrayOutputStream:将内存中数据输出,是OutputStream的子类

//定义一个字符串,全部由大写字母组成
		String string = "HELLOWORLD";
		
		//内存输入流
		//向内存中输出内容,注意:跟文件读取不一样,不设置文件路径
		ByteArrayInputStream bis  = new ByteArrayInputStream(string.getBytes());
		//内存输出流
		//准备从内存中读取内容,注意:跟文件读取不一样,不设置文件路径
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		
		int temp = 0;
		//read()方法每次只读取一个字符
		while((temp = bis.read()) != -1) {
			//将读取的数字转为字符
			char c = (char)temp;
			//将字符变为大写
			bos.write(Character.toLowerCase(c));
		}
		//循环结束之后,所有的数据都在ByteArrayOutputStream中
		//取出内容,将缓冲区内容转换为字符串
		String newString = bos.toString();
		
		//关闭流
		bis.close();
		bos.close();
		System.out.println(newString);

四、标准输入输出流

          Java的标准输入/输出分别通过System.inSystem.out实现,默认情况下分别代表是键盘显示器。 

          PrintStream:PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。

          重定向System.out() 输出的位置(默认控制台)

PrintStream ps = new PrintStream("E:\\A.txt");
        System.setOut(ps);
        System.out.println("你好,北京!");         //这句话本来会打印到控制台,但是由于上面重定向了打印位置,所以此句话会打印到E盘下的A文件中

          PrintWriter:向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream中的所有 print方法。它不包含用于写入                                                 原始字节的方法。

FileInputStream inputStream = new FileInputStream(new File("test33.txt"));
		
		//setIn
		System.setIn(inputStream);
		
		//System.out.println("请输入内容:");
		
		//默认情况下是从控制台进行获取内容
		//但是如果使用setIn方法设置了重定向之后,将从指定文件中获取内容
		Scanner sc = new Scanner(System.in);
		
		String string = sc.next();
		
		System.out.println(string);

五、对象流

          顾名思义:操作的数据是对象

                       序列化:将对象写入到本地文件中

                       反序列化:将本地文件中的对象读取出来。

           对象流:

                     ObjectInputstream         对象输入流

                     ObjectOutputStream      对象输出流

            注意:序列化对象必须实现serializable接口,否则不能序列化

                      对象中那些字段可以不序列化:
                                 1 transient 修饰的字段
                                 2 静态的字段
                                 在要序列化类中添加字段,保证序列化和反序列化是同一个类    
                                        private static final long serialVersionUID = 100L;

六、properties类

             是Map接口的一个实现类,是HashTable的一个子类

             Properties集合中的元素是通过键值对存储

             Properties特点:
               1 存储属性名和属性值
               2 属性名和属性值都是字符串
               3 和流有关系
               4 没有泛型  

              主要作用是后期配置文件的处理 

              虽然其存储元素是Object,但我们使用是都是配置文件,都会使用String类型,setproperties() getproperties()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值