字符流与字节流

标准输入输出流概述
在这里插入图片描述
OutputStreamWriter的概述和使用
在这里插入图片描述
之前我们是怎么做的?

BufferedReader br = new BufferedReader(new FileReader("dd"));
		
		OutputStream os = System.out;
		
		String line;
		while((line = br.readLine())!= null) {
			os.write(line.getBytes());
			os.write("\r\n".getBytes());
		}
		
		os.close();
		br.close();

运行结果
在这里插入图片描述
的确能出结果,不过很麻烦,因为出现了转换流
在这里插入图片描述

改进后的代码

BufferedReader br = new BufferedReader(new FileReader("dd"));
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line;	
		while((line = br.readLine())!=null) {
			bw.write(line);
			bw.newLine();
		}
		
		bw.close();
		br.close();

运行结果一样,不过简便不少

InputStreamReader的概述和使用
在这里插入图片描述
之前我们的解决方式

//创建输入流对象
		InputStream is = System.in;
		
		//创建输出流对象
		FileWriter fw = new FileWriter("b.txt");
		
		//读写数据
		byte[] b = new byte[1024];
		int len;
		while((len = is.read(b))!= -1) {
			fw.write(new String(b, 0, len));
			
		}
		
		//释放资源
		fw.close();
		is.close();

也挺麻烦
在这里插入图片描述

改进后的代码

InputStream is = System.in;
		InputStreamReader isr = new InputStreamReader(is);
		
		FileWriter fw = new FileWriter("c.txt");
		
		char[] c = new char[1024];
		int len;
		while((len = isr.read(c))!= -1) {
			fw.write(c);
			fw.flush();
		}

打印流的概述
在这里插入图片描述

实例代码

//创建打印流对象
		PrintWriter pw = new PrintWriter("f.txt");
		
		//写出数据
		pw.write("hello");
		pw.write("my");
		pw.write("girl");
		
		//释放资源
		pw.close();

运行结果
在这里插入图片描述

打印流特有功能
在这里插入图片描述
使用手动换行
代码

//创建打印流对象
				PrintWriter pw = new PrintWriter("g.txt");
				
				//写出数据
				pw.println("hello");
				pw.println("my");
				pw.println("girl");
				
				//释放资源
				pw.close();

运行结果
在这里插入图片描述
使用打印流特有功能自动换行

PrintWriter pw = new PrintWriter(new FileWriter("h.txt"),true);
		
		pw.println("hello");
		pw.println("my");
		pw.println("girl");
		
//		pw.close();//把刷新关了  看能不能自动刷新

运行结果
在这里插入图片描述
一样能出来

使用打印流复制文本文件
在这里插入图片描述

//创建输入流对象
		BufferedReader br = new BufferedReader(new FileReader("i.txt"));
		
		//创建打印流对象
		PrintWriter pw = new PrintWriter(new FileWriter("d:\\a\\i.txt"),true);
		
		//读写(复制)
		String line;
		while((line = br.readLine())!= null) {
			pw.println(line);
		}
		
		//释放资源
		pw.close();
		br.close();

运行结果
在这里插入图片描述

对象操作流的概述
在这里插入图片描述

使用对象操作流读写对象

需求
在这里插入图片描述

在这里插入图片描述

代码
首先写一个学生类

class Student10 implements Serializable {
	String name;
	int age;
	public Student10(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student10 [name=" + name + ", age=" + age + "]";
	}
	
	
}

接下来正体

//创建对象输出流的对象
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("j.txt"));
		
		//创建学生对象
		Student10 s1 = new Student10 ("杨狗蛋",22);
		Student10 s2 = new Student10 ("龚翠华",20);
		
		//写出学生对象
		oos.writeObject(s1);
		oos.writeObject(s2);
		
		//释放资源
		oos.close();

现在对象就写进去了
开始读出来

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("j.txt"));
		
		Object obj = ois.readObject();
		System.out.println(obj);
		Object obj2 = ois.readObject();
		System.out.println(obj2);
		Object obj3 = ois.readObject();
		System.out.println(obj3);
		ois.close();

如上代码所示,不小心多输出了一个会怎么样?返回-1还是null?
在这里插入图片描述
嗯,报错了,出现了没有序列化的异常,
修改方法
在这里插入图片描述
首先要让
在这里插入图片描述

接下来装进try catch语句里面输出

try {
			while(true) {
				Object obj = ois.readObject();
				System.out.println(obj);
			}
		}catch( EOFException e) {
			System.out.println("读到文件末尾了");
		}

运行结果
在这里插入图片描述

进一步解决对象输入流读取对象出现异常的问题

不能确定到底该输出多少个,那我们就让它变成一个,所以我们可以使用集合把他们装进去,再输出来集合

首先写入数据
在这里插入图片描述

//创建对象输出流对象
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("k.txt")); 
		
		//创建集合对象
		ArrayList<Student11> list = new ArrayList<>();
		
		//添加学生对象
		list.add(new Student11("杨大物",22));
		list.add(new Student11("龚龚",20));
		
		//写出集合对象
		oos.writeObject(list);
		
		//释放资源
		oos.close();

接下来输出数据
在这里插入图片描述

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("k.txt"));
		
		Object obj = ois.readObject();
		System.out.println(obj);
		ois.close();

运行结果
在这里插入图片描述

但是这样会一口气把所有的挤在一起输出
那我们想要一个一个元素的慢慢输出怎么办?

修改方法在这里插入图片描述

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("k.txt"));
		
		Object obj = ois.readObject();
//		System.out.println(obj);
		
		//想要一个一个的输出对象怎么办
		//向下转型  再遍历
		ArrayList<Student11> list  = (ArrayList<Student11>) obj;
		for (Student11 student11 : list) {
			System.out.println(student11);
		}

		
		ois.close();

运行结果
在这里插入图片描述

解决对实现序列化接口出现的黄色警告问题
给一个固定的序列号就好!
在这里插入图片描述
在这里插入图片描述

Properties的概述
在这里插入图片描述

	//创建属性列表对象
		Properties pp = new Properties();
		
		//添加映射关系
		pp.put("001", "大王");
		pp.put("002", "虹吸");
		pp.put("003", "上冲");
		//遍历属性列表
		Set<Object> keys = pp.keySet();
		for (Object key : keys) {
			Object value = pp.get(key);
			System.out.println(key+"---"+value);
		}
		
		System.out.println("#################");
		
		Set<Map.Entry<Object, Object>> entrys = pp.entrySet();
		for (Map.Entry<Object, Object> entry : entrys) {
			Object key = entry.getKey();
			Object value = entry.getValue();
			System.out.println(key+"------"+value);

运行结果
在这里插入图片描述

Properties和IO流结合的功能
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
String comments就是可以在前面加描述性的语句

编码表的概述

在这里插入图片描述

Java中字符串的编码
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值