IO流输入和输出(下)

本文围绕Java的IO流展开,介绍了字符输入流常用实现类FileReader及其构造、方法,高效字符流BuffereReader和BufferWriter的使用。还阐述了读写二进制文件的DataInputStream和DateOutputStream的实现步骤,以及序列化和反序列化,包括ObjectOutputStream和ObjectInputStream的使用及注意事项。

字符输入流

常用实现类:

​ FileReader

构造方法

​ FileReader(File file);

​ FileReader(String pathname);

常用方法

​ int read(char[] buffer); 读取数据到字符数组中 返回读取的字符数

​ int read(char[] buffer,int offset,int len); 读取指定长度的字符数据到数组中 返回读取的字符数

常用方法
1、输出一个字符串:void write(String str);
2、输出一个字符串的一部分:void write(String str,int offset,int len);
3、输出一个字符数组:void write(char[] buffer);
4、输出一个字符数组的一部分:void writer(char[] ,int offset,int len);关流方法:void close(); 在try-catch中可以通过try() 形式自动关流。

高效字符流的使用

高效字符输入流
BuffereReaderx
构造方法
BufferReader(Reader re);

常用方法
String readLine();读取一行数据其他同普通字符输入流,但是比之前更加高效。

高效字符输出流
BufferWriter
构造方法
BufferedWriter(Writer wr);
常用方法
方法基本和普通字符输出流一样,但是比之更加高效。(都是重写自writer类相关方法)

读写二进制文件

DataInputStream读取二进制

和字节流FileInputStream类实现文本文件读取步骤很相似。
DateInputStream顾名思义专门用来读写各种各样的数据的,比如(int,char,long类型等)。

构造方法
DateInputStream(InputStream in)

实现步骤

在这里插入图片描述

DateOutputStream输出二进制

于字节流FileOutputStream类实现文本文件读取步骤相似

构造方法
DataOutputStream(OutputStream out)

实现步骤

在这里插入图片描述

DataOutputStream dos = null;
DataInputStream dis = null;
try{
	dos = new DataOutputStream(new FileOutputStream("e:/kY.txt"));
	dis = new DataInputStream(new FileInputStream("e:/kY.txt"));
	dos.writrUTF("Hi,my name is jack");
	dos.writeBoolean(true);

	String readUTF = dis.readUTF();
	boolean readBoolean = dis.readBoolean();
	Syso(readUTF);
	syso(readBoolean);
}catch(Excption e){
	e.printStackTrace();
}finally{
	dos.close
	dis.close
}

序列化和反序列化

序列化:将对象按照指定的规则存储到文件中。

反序列化:将文件中的数据按照指定的规则转换为对象。

使用集合保存对象,可以将几何中的所有对象序列化。如果想文件中使用序列化机制写入多给对象,那么序列化恢复对象时,必须按照写入的顺序读取。
在这里插入图片描述
序列化
ObjectOutputStream

try{
	ObjectOutputStream oos = new ObjectOutputStream(new 				FileOutputStream("e:/kY.txt")){
	Hotel hotel = new Hotel(1L,"糊涂酒店","糊涂大街",new Date());
	oos.writeObject(hotel);
} catch(Excption e){
	e.printStackTrace();
}

反序列化
ObjectInputStream

public class Demo {

	public static void main(String[] args) {
		try (
			ObjectInputStream(InputStream is)
			ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/hotel.txt"));
			){
			// 反序列化
			Object obj = ois.readObject();
			Hotel hotel = (Hotel)obj;
			System.out.println(hotel);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

需要注意,如果不是实现serializable接口就会出现NotSerializableExcption异常

成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存与各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询与编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位与空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可与属性表中的相应记录关联,实现空间数据与统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取与显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积与对应人口数,计算并比较人口密度,识别高密度与低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据与地形、交通网络、环境指标等其他地理图层进行叠加,探究自然与人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理与学术研究提供科学依据。 资源来源于网络分享,仅用于学习交使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值