黑马程序员---IO流的简单应用

本文详细介绍了Java IO流的概念、分类及其在文件读写中的应用,重点阐述了字符流与字节流的区别与使用场景,通过实例演示了如何使用FileWriter和FileReader进行数据读写操作,包括数据的追加写入、换行处理以及异常处理策略,旨在帮助开发者高效地进行文件操作。


------- android培训java培训期待与您交流! ----------

 IO流概述:

(1)IO流的作用:上传文件和下载文件。
(2)IO流的分类:
A:流向
输入流 读取数据
输出流 写出数据
B:数据类型
字节流:字节输入流、字节输出流
字符流:字符输入流、
字符输出流

一般来说,如果没有说明按照哪种类型分,指的是按照数据类型分。
(3)什么时候使用字符流,什么时候使用字节流。
如果一个要操作的文件,通过记事本打开并能够读懂其内容,就可以考虑使用字符流。
否则,就使用字节流。
什么都不知道,就用字节流。
(4)IO的基类及具体类
A:字节流
字节输入流:InputStream、FileInputStream
字节输出流:OutputStream、FileOutputStream
B:字符流
字符输入流:Reader、FileReader
字符输出流:Writer、FileWriter
(5)FileWriter写数据的步骤及代码体现:
步骤:
A:创建字符输出流对象。
B:调用write方法。
C:释放资源。

public class IODemo {
	public static void main(String[] args) throws IOException {
		// 创建字符输出流对象
		FileWriter fw = new FileWriter("fw.txt");
		// public void write(String str)
		fw.write("hello,io,I am coming");
		fw.flush();
		fw.close();
	}
}
 
  

几个要注意的小问题:A:创建字符输出流对象做了哪些事情? 调用系统功能,创建一个文件fw2.txt。  创建字符输出流对象。  把对象指向文件B:为什么要刷新缓冲区?  因为数据底层是字节流数据,如果要使用字符流数据,就得刷新缓冲区才能写入文件。C:为什么要释放流资源?  关闭流对象,将流对象变为垃圾。  通知操作系统去释放,并开始创建那个文件相关的资源。D:刷新和释放有什么区别?          flush() 刷新缓冲区,流对象还可以继续使用。            close() 释放资源,但是会先刷新一次缓冲区,保证数据不丢失,操作完毕后,流对象不可以再被使用。 E:如何实现数据的换行?                            不同的操作系统对换行符的识别不太一致: windows:\r\nlinux:\n mac:\rF:如何实现数据的追加写入?                           使用带两个参数的构造方法。  第二个参数指示是否是追加写入。   public FileWriter(String fileName,boolean append)(6)FileReader读数据的步骤及代码体现:步骤:A:创建字符输入流对象。B:调用read方法,并把数据显示在控制台。C:释放资源。

			FileReader fr = new FileReader("fr.txt");
			//方式1:一次读取一个字符
			int ch = 0;
			while((ch=fr.read())!=-1) {
				System.out.print((char)ch);
			}
			//方式2:一次读取一个字符数组
			char[] chs = new char[1024];
			int len = 0;
			while((len=fr.read(chs))!=-1) {
				System.out.print(String.valueOf(chs,0,len));
			}
			fr.close();
(7)复制文本文件:
两种方式操作。代码自己补齐。
数据源:c:\\a.txt
目的地:d:\\b.txt
(8)加入异常后的代码(看懂即可)
A:FileWriter写数据
B:字符流复制文本文件

(9)使用FileReader和FileWriter来拷贝文件

public class CopyFileDemo {
	public static void main(String[] args) throws IOException {
		// 封装数据源
		FileReader fr = new FileReader("IODemo.java");
		// 封装目的地
		FileWriter fw = new FileWriter("d:\\Copy.java");

		// 读取数据并写出数据
		int ch = 0;
		while ((ch = fr.read()) != -1) {
			fw.write(ch);
		}

		// 释放资源
		fw.close();
		fr.close();
	}
}




-------  android培训 java培训 期待与您交流! ----------
基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值