Day20(IO流)学习笔记(标准输入流&转换流&打印流 对象操作流 Properties集合)

大纲:

Day20(IO流)学习目标

【学习目标】理解、了解、应用、记忆

通过今天的学习,参训学员能够:(解释的时候说出二级目标的掌握程度)

  1. 【应用】标准输入流 & 转换 & 打印流
  1. 【理解】能够独立使用标准的输入流和标准的输出流
  2. InputStream in = System.in;
  3. OutPutStream out = System.out;
  4. 【应用】能够利用转换流将标准输入流转换为字符流使用
  5. 【应用】能够独立使用打印流自动换行和自动刷新功能
  6. 【应用】能够独立利用打印流完成复制文本文
  1. 【应用】对象操作流
  1. 【应用】能够独立使用对象流进行读写对象 
  2. 【应用】能够独立解决对象操作流读取对象出现的异常问题
  3. 【理解】能够理解在序列化的类中序列号的含义
  1. 【应用】Properties 集合

     a.   【应用】 能够独立使用Properties集合存储键值对

  1.  【应用】 能够独立使用Properties和IO流结合的功能

     4. 【应用】编码表

     a.   【理解】阐述常见的码表及特点

  1.  【应用】独立编写使用字节流并指定编码对文件读写操作的案例
  2.  【应用】独立编写使用字符流并指定编码对文件读写操作的案例

收获:

一:标准输入流 & 转换 & 打印流

1标准输入输出流

 package com.itheima_05;
/*
 * 标准输入输出流:
		public static final InputStream in:字节输入流,用来读取键盘录入的数据
			public static final int x;
			InputStream is = System.in;
			Scanner sc = new Scanner(System.in);
		public static final PrintStream out:字节输出流,将数据输出到命令行
			System.out.println();
 */	
public class SystemInOutDemo {
	
}

2转换流

OutputStreamWriter:将字节输出流转换为字符输出流

    package com.itheima_05;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

/*
 * 需求:读取项目根目录下的SystemInOutDemo.java,并输出到命令行
 * 
 * 数据源:项目根目录下的SystemInOutDemo.java	BufferedReader
 * 目的地:命令行	System.out
 * 
 * 
 * 由于标准输出流是一个字节输出流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组
 * 我们要想通过标准输出流输出字符串,把标准输出流转换成一种字符输出流即可,OutputStreamWriter
 * 
 * OutputStreamWriter(OutputStream out) :转换流,把字节输出流转换成字符输出流
 * 
 * 
 */
public class OutputStreamWriterDemo {
	public static void main(String[] args) throws IOException   {
		//method2();
		
		//创建输入流对象
		BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));
		//创建输出流对象
		//OutputStream os = System.out;
		//Writer w = new OutputStreamWriter(System.out);//多态,父类型引用指向子类对象
		//BufferedWriter bw = new BufferedWriter(w);
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		
		//进行数据的读写
		String line;//用于存储读取到的数据
		while((line = br.readLine()) != null) {
			bw.write(line);
			bw.newLine();
		}
		
	
		
		//释放资源
		bw.close();
		br.close();
		
		
	}

	private static void method2() throws FileNotFoundException, IOException {
		//创建输入流对象
		BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));
		//创建输出流对象
		//OutputStream os = System.out;
		Writer w = new OutputStreamWriter(System.out);//多态,父类型引用指向子类对象
		
		//进行数据的读写
		String line;//用于存储读取到的数据
		while((line = br.readLine()) != null) {
			w.write(line);
			w.write("\r\n");
		}
		
	
		
		//释放资源
		w.close();
		br.close();
	}

	private static void method() throws FileNotFoundException, IOException {
		//创建输入流对象
		BufferedReader br = new BufferedReader(new FileReader("SystemInOutDemo.java"));
		//创建输出流对象
		OutputStream os = System.out;
		
		String line;//用于存储读取到的数据
		while((line = br.readLine()) != null) {
			os.write(line.getBytes());
			os.write("\r\n".getBytes());
		}
		
		//释放资源
		os.close();
		br.close();
	}
}

​​​​​​​InputStreamReader:将字节输入流转换为字符输入流

package com.itheima_05;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

/*
 * 需求:读取键盘录入的数据,并输出到项目根目录下的a.txt文件中
 * 
 * 数据源:读取键盘录入的数据	System.in
 * 目的地:项目根目录下的a.txt	FileWriter
 * 
 * 
 * 
 * 转换流:需要把字节输入流转换成字符输入流,InputStreamReader
 * InputStreamReader(InputStream in) 
 */
public class InputStreamReaderDemo {
	public static void main(String[] args) throws IOException  {
		//创建输入流对象
		InputStream is = System.in;
		Reader r = new InputStreamReader(is);
		//创建输出流对象
		FileWriter fw = new FileWriter("a.txt");
		
		//读写数据
		char[] chs = new char[1024];
		int len;
		while((len = r.read(chs)) != -1) {
			fw.write(chs,0,len);
			fw.flush();
		}
		
		
		//释放资源
		fw.close();
		is.close();
		
	}

	private static void method() throws IOException {
		//创建输入流对象
		InputStream is = System.in;
		//创建输出流对象
		FileWriter fw = new FileWriter("a.txt");
		
		//读写数据
		byte[] bys = new byte[1024];
		int len;//用于存储读取到的字节个数
		while((len = is.read(bys)) != -1) {
			fw.write(new String(bys,0,len));
			fw.flush();
		}
		
		
		//释放资源
		fw.close();
		is.close();
	}
}

3​​​​​​​打印

打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.

字符打印流 PrintWriter

void print(String str): 输出任意类型的数据,

void println(String str): 输出任意类型的数据,自动写入换行操作

package com.itheima_06;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;

/*
 * 打印流:
 * 		PrintStream
 * 		PrintWriter
 * 			可以自动换行,println()
 * 			不能输出字节,但是可以输出其他任意类型
 * 			通过某些配置,可以实现自动刷新(只有在调用 println、printf 或 format才有用)
 * 			也是包装流,不具备写出功能
 * 			可以把字节输出流转换成字符输出流
 * 
 * 注意:只能输出不能输入
 * 
 *  
 */
public class PrintWriterDemo {
	public static void main(String[] args) throws IOException  {
		//创建打印流对象
		PrintWriter pw = new PrintWriter("b.txt");
		
		//写出数据
		pw.write("hello");
		pw.write("world");
		pw.write("java");
		
		//释放资源
		pw.close();
	}
}

二:对象操作流

三:Properties 集合

  1 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字      符串。

   特点:

1、Hashtable的子类,map集合中的方法都可以用。

2、该集合没有泛型。键值都是字符串。

3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。

2利用Properties存储键值对

  package com.itheima_08;

import java.util.Map;
import java.util.Properties;
import java.util.Set;

/*
 * Properties:表示了一个持久的属性集,属性列表中每个键及其对应值都是一个字符串
 * 
 * 构造方法:
 * 		Properties() 
 */
public class PropertiesDemo2 {
	public static void main(String[] args) {
		//创建属性列表对象
		Properties prop = new Properties();
		//添加映射关系
		prop.put("CZBK001", "zhangsan");
		prop.put("CZBK002", "lisi");
		prop.put("CZBK003", "wangwu");
		
		//遍历属性列表
		//获取所有的key,通过key获取value
		Set<Object> keys = prop.keySet();
		for (Object key : keys) {
			Object value = prop.get(key);
			System.out.println(key + "=" + value);
		}
		System.out.println("------------------");
		//获取所有的结婚证对象
		Set<Map.Entry<Object,Object>> entrys = prop.entrySet();
		for (Map.Entry<Object, Object> entry : entrys) {
			Object key = entry.getKey();
			Object value = entry.getValue();
			System.out.println(key + "=" + value);
		}
	
	}
}

3​​​​​​​Properties与流结合使用

package com.itheima_08;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;

/*
 * Properties和IO流结合的功能: 
			void load(Reader reader) 
			
			void list(PrintWriter out)
			void store(Writer writer, String comments) 
 		
 *
 */
public class PropertiesDemo2 {
	public static void main(String[] args) throws IOException{
		//method();
		
		//method2();
		
		//创建属性列表对象
		Properties prop = new Properties();
		//添加映射关系
		prop.setProperty("CZBK001", "zhangsan");
		prop.setProperty("CZBK002", "lisi");
		prop.setProperty("CZBK003", "wangwu");
		//创建输出流对象
		FileWriter fw = new FileWriter("e.txt");
		
		//void store(Writer writer, String comments) 
		prop.store(fw, "hello world");
		
		//释放资源
		fw.close();
		
	
	}

	private static void method2() throws FileNotFoundException, IOException {
		//创建属性列表对象
		Properties prop = new Properties();
		//创建一个输入流对象
		FileReader fr = new FileReader("d.txt");
		
		//void load(Reader reader) 
		prop.load(fr);
		
		//释放资源
		fr.close();
		
		System.out.println(prop);
	}

	private static void method() throws FileNotFoundException {
		//创建属性列表对象
		Properties prop = new Properties();
		//添加映射关系
		prop.setProperty("CZBK001", "zhangsan");
		prop.setProperty("CZBK002", "lisi");
		prop.setProperty("CZBK003", "wangwu");
		
		//创建打印流对象
		PrintWriter out = new PrintWriter("d.txt");
		//void list(PrintWriter out)  
		prop.list(out);
		
		//释放资源
		out.close();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值