第18章 JAVA I/O系统

打造AI智能体员工,我用扣子复刻了华与华、奥美和金枪大叔 这事说穿了,就是你用多个AI智能体,分别扮演专业角色,构成一支能力互补、各司其职的“数字团队”。每个智能体,都有明确的角色设定、任务边界和接口形式。它不再是一个泛泛的ChatGPT,而是你手下的“品牌顾问”、“策略专家”、“文案大神”、“短视频导演”、“运营总监”。简单来说,你不再是雇一个人,而是养一群机器人打工——24小时不摸鱼,不请假,不离职。如果你是个人创业者、内容创作者、培训机构、中小企业主,其实都可以尝试构建属于你自己的“AI虚拟员工矩阵”。 阅读详情

18.1 File类

既能代表一个特定文件的名称,又能代表一个目录

18.2 输入和输出

我们很少使用单一的类来创建流对象而是通过创建多个对象来提供所期望的功能,实际上,JAVA中流类库让你迷惑的主要原因就在于:创建单一的结果流,却需要

创建多个对象;

18.2.1 InputStream类型

InputStream的作用是用来表示那些从不同数据源产生输入的类,这些数据源包括:

字节数组、String对象、文件、管道(从一段输入从另一端输出)、一个由其他种类的流组成的序列以便我们可以将它们收集到一个流内、其他数据源(如:网络请求)

每一种数据源都有对应的InputStream子类,另外FilterInputStream也属于InputStream从而为装饰器类提供基类,其中装饰器类可以把属性或有用的接口与输入流连接在一起

类

功能

构造器参数

如何使用

ByteArrayInputStream

允许将内存的缓冲区当做InputStream使用

缓冲区,字节将从中取出

作为一种数据源:将其FilterInputStream

对象相连以提供有用接口

StringBufferInputStream

将String转换成InputStream

字符串,底层实现实际使用StringBuffer

作为一种数据源:将其与FilterInput-

Stream对象相连以提供有用接口

FileInputStream

从文件中读取信息

字符串、File、FileDescriptor对象

作为一种数据源:将其与FilterInput-

Stream对象相连以提供有用接口

PipedInputStream

产生用于写入相关PipedOutputStream的数据,实现“管道化”概念

PipedOutputStream

作为多线程中数据源:将其与FilterInput

Stream对象相连以提供有用接口

SequenceInputStream

将两个或多个Input

Stream对象转换成单一InputStream

两个InputStream对象或一个容纳Input-

Stream对象的容器Enumeration

作为一种数据源:将其与FilterInput-

Stream对象相连以提供有用接口

FilterInputStream

抽象类,作为装饰器的接口,其中装饰器为其他的Input-

Stream类提供有用功能

见下一节

见下一节

18.2.2 OutputStream类型

该类别的类决定了输出所要前往的目标:字节数组、文件、管道;另外,FilterOutputStream为装饰器类提供了一个基类,装饰器类把属性或者有用的接口与输出流连接起来

类

功能

构造器参数

如何使用

ByteArrayOutputStream

在内存中创建缓冲区,所有送往流的数据都要放置在此缓冲区

缓冲区初始化尺寸(可选的)

用于指定数据的目的地:将其余Filter-
OutputStream对象相连以提供有用接口

FileOutputStream

用于将信息写至文件

字符串、File、File-
Descriptor对象

指定数据的目的地:将其与FilterOutput-
Stream对象相连以提供有用接口

PipedOutputStream

任何写入其中的信息都会自动作为相关PipedInputStream的输出,实现管道化概念

PipedInputStream

指定用于多线程的数据的目的地:将其与
FilterOutputStream对象相连以提供有用接口

FilterOutputStream

抽象类,作为装饰器的接口,其中装饰器为其他OutputStream提供有用功能

下一节

下一节

装饰模式

装饰模式就是给一个对象增加一些新的功能,而且是动态增加,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例;

优点:动态的为一个对象增加新功能,还能动态撤销

缺点:产生过多相似的对象

18.3 添加属性和有用的接口

JAVA I/O类库需要多种不同功能的组合,这也是使用装饰器模式的理由所在,这也是I/O类库里存在filter(过滤器)类的原因所在,抽象类filter是所有装饰器类的基类,装饰器必须具有和它所装饰的对象相同的接口,但它也可以扩展接口而这种情况只发生在个别filter类中;

但是,装饰器模式也有一个缺点:在编程的时候,它给我们提供了相当多的灵活性,但同时也增加了代码的复杂性,JAVA I/O类库操作不方便的原因在于:我们必须创建许多类---“核心”I/O类型加上所有的装饰器才能得到我们所希望的单个I/O对象

(这里我真想能列举出每个I/O对应的装饰类的类名,当然前提是它有的话)

FilterInputStream和FilterOutputStream是用来提供装饰器类接口来控制特定InputStream和OutputStream的两个类,FilterInputStream和FilterOutputStream分别从InputStream和OutputStream派生而来,这两个类是装饰器的必要条件

18.3.1 通过FilterInputStream从InputStream读取数据

FilterInputStream子类列表:

类

功能

构造器参数

如何使用

DataInputStream

与DataOutputStream搭配使用,因此我们可以按照可移植方式从流中读取基本类型

InputStrea

包含用于读取基本类型数据的全部接口

BufferedInputStream

使用它可以防止每次读取时都要进行实际写操作,代表“使用缓冲区”

InputStream、可以指定缓冲区大小(可选)

本质上不提供接口,只不过是向进程中添加缓冲区所必须的,与接口对象搭配

LineNumberInputStream

跟踪输入流中的行号,可调用getLineNumber和setLineNumber(int)

InputStream

仅仅增加了行号,因此可能要与接口对象搭配使用

PushbackInputStream

具有“能弹出一个字节的缓冲区”,因此可以将读到的最后一个字符回退

InputStream

通常作为编译器的扫描器,之所以包含在内是因为JAVA编译器的需要,我们可能永远用不到

18.3.2 通过FilterOutputStream向OutputStream写入

1、与DataInputStream对应的DataOutputStream,它可以将各种基本数据类型以及String对象格式化输出到流中,这样以来,任何机器上的任何DataInputStream都能够读取它们,所有方法都是wirte开头;

2、PrintStream最初的目的便是为了以可视化格式打印所有的基本数据类型以及String对象,这和DataOutputStream不同,DataOutputStream是将数据元素写入流中,PrintStream包含2个重要方法:print、println;PrintStream捕捉了所有的IOExecption,因此我们必须使用checkError来让开发者检查错误状态,如果出现错误该方法则返回true,还有PrintStream尚未完全国际化,不能以平台无关的方式来处理换行动作

FilterOutputStream子类列表

类

功能

构造器参数

如何使用

DataOutputStream

与DataInputStream搭配使用,因此可以按照可移植方式向流中写入基本类型数据

OutputStream

包含用于写入基本类型数据的全部接口

PrintStream

用于产生格式化输出

OutputStream

可是用boolean来决定是否在每次换行时清空缓存区,应该是对OutputStream兑现个final封装

BufferedOutputStream

使用它可以避免每次发送数据时都要进行实际的写操作,代表“使用缓冲区”,可以调用flush清空缓冲区

OutputStream,可以指定缓冲区大小(可选)

本质上并不提供接口,只不过是向进程中添加缓冲区所必须的,与接口对象搭配

18.4 Reader和Writer

InputStream和OutputStream在以面向字节形式的I/0中仍可以提供极有价值的功能,Reader和Writer则提供了兼容Unicode与面向字符的I/0功能

InputStreamReader可以把InputStream转换为Reader,而OutputStreamWriter可以把OutputStream转换为Writer

18.4.1 数据的来源和去处

来源与去处 JAVA1.0

相应的JAVA1.1类

InputStream

Reader,适配器InputStreamReader

OutputStream

Writer,适配器OutputStreamWriter

FileInputStream

FileReader

FileOutputStream

FileWriter

StringBufferInputStream,已弃用

StringReader

 

StringWriter

ByteArrayInputStream

CharArrayReader

ByteArrayOutputStream

CharArrayWriter

PipedInputStream

PipedReader

PipedOutputStream

PipedWriter

18.4.2 更改流的行为

过滤器:JAVA1.0类

相应的JAVA1.1类

FilterInputStream

FilterReader

FilterOutputStream

FilterWriter,抽象类,没有子类

BufferedInputStream

BufferedReader

BufferedOutputStream

BufferedWriter

DataInputStream

使用DataInputStream

PrintStream

PrintWriter

LineNumberInputStream,已弃用

LineNumberReader

StreamTokenizer

StreamTokentzer

PushbackInputStream

PushbackReader

 

18.6 I/O流的典型使用方式

18.6.1 缓冲输入文件

BufferedReader in = new BufferedReader(newFile(“XXXX.txt”));

String s;

While((s = in.readLine()) != null){

         System.out.println(s);

}

18.6.2 从内存输入

StringReader in = new StringReader(BufferedInputFile.read(“XXX.java”));

Int c;

While((c = in.read()) !=  -1){

         System.out.print((char)c);

}

18.8 标准I/O

标准I/O的意义在于:我们可以很容易地把程序串联起来,一个程序的标准输出可以成为另一个程序的标准输入;

18.8.1 从标准输入中读取

System.out/System.err被包装成了PrintStream对象,而System.in却是一个没有被包装过的未经加工的InputStream,

BufferedReader reader = new BufferedReader(newInputStreamReader(System.in));

String s;

While((s = reader.readLine() != null)&& s.length() != 0){

         System.out.print(s);

}

18.8.2 将System.out转换成PrintWriter

PrintWriter out = new printWriter(System.out,true);

18.8.3 标准I/O重定向

setIn(InputStream)/setOut(PrintStream)/setErr(PrintStream)

 

 

第11节:GPU 线程层级:线程、线程块、网格 层级标识变量功能线程threadIdx执行单元,处理数据线程块blockIdx管理多个线程,提供共享内存网格管理多个 blockGPU 编程中,合理安排线程层级,是提升性能的关键。 阅读详情

相关推荐

基于STM32的智能家用节能控制系统设计

该系统可以实时监测家庭的环境参数,如温湿度、光照强度和人体存在情况,根据设定的节能策略自动控制灯光、空调、风扇等家电设备,从而降低不必要的能源消耗。该基于STM32的智能家用节能控制系统通过多种传感器实现了对家庭环境的实时监测,并结合继电器控制模块实现了对家电设备的自动化控制,从而达到节能减排的效果。根据传感器获取的数据,判断是否需要开启或关闭家电设备,从而降低不必要的能源消耗,达到节能的目的。:继电器的控制引脚连接至STM32的GPIO引脚(如PB0、PB1),用于控制灯光、风扇、空调等家电设备的开关。

stm32d1219的博客 1246

java 系统找不到指定文件夹_FileNotFoundException:系统找不到指定的文件

侃侃尔雅将Wordd.txt直接放置为项目根文件夹的子文件夹和src的对等方Project_Rootsrcword.txt免责声明:我想解释一下为什么这在这个特殊的情况下有效,为什么它可能不适用于其他人。其工作原理:当你使用File或者其他任何一个FileXxx变量,您正在寻找文件系统上相对于“工作目录”..工作目录,可以描述为:当您从命令行运行时C:\EclipseWorkspa...

weixin_33220713的博客 3475

Masta调用Geometry Modeller(Space Claim)进行根据三维模型快速建模设置方法

masta中调用ANSYS的space claim的设置方法

xifegnlie的博客 244

第十八章 Java I/O系统

文章目录1.目录列表器目录使用工具2.输入和输出InputStream类型OutputStream类型3.添加属性和有用的接口通过FilterInputStream从InputStream读取数据通过FileOutputStream向OutputStream写入4.Reader和Writer更改流的行为5.自我独立的类:RandomAccessFileRandomAccessFile方法存储和恢复数据读取随机访问文件6. I/O流的典型使用方式缓冲输入文件从内存输入格式化的内存输入基本的文件输出7.文件读写

小名同学 22万+

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 419

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8219

《java编程思想——第十八章(Java I/O系统)》

Java I/O系统## 18.1File类 目录列表器

ByteX的博客 258

2026年经典爬虫案例专栏|第17篇:学术论文爬虫实战——知网与万方数据采集

字段名说明数据类型title论文标题字符串authors作者列表列表abstract摘要字符串keywords关键词列表列表journal发表期刊字符串year发表年份整数volume卷号字符串issue期号字符串pages页码范围字符串citations引用次数整数downloads下载次数整数doiDOI编号字符串url论文链接字符串学术论文爬虫是科研工作的重要辅助工具,可以帮助研究人员高效地收集和管理论文数据。

2201_76125261的博客 1063

第18章 Java I/O系统

java文件读写框架内容,包含io和nio内容。

yuexiaqiying的博客 1432

PyRoki:机器人运动学优化库入门教程

PyRoki:模块化机器人运动学优化工具包 本文介绍了PyRoki,一个模块化、可扩展且跨平台的机器人运动学优化工具包。PyRoki通过统一变量和成本函数接口,简化了逆运动学、轨迹优化和运动重定向等任务的实现,支持CPU、GPU和TPU加速。实验表明,PyRoki在批量逆运动学任务中比现有GPU加速库cuRobo快1.4-1.7倍,且收敛误差更低。其模块化设计支持快速集成新成本函数,并通过交互式可视化工具优化参数配置。PyRoki开源发布,为机器人运动优化提供了灵活高效的解决方案。

机器人控制与仿真应用 1293

NLP高频面试题(一)——Transformer的基本结构、作用和代码实现

本文详细介绍了Transformer模型的基本结构和PyTorch代码实现过程。首先解析了Transformer的核心组成部分,包括嵌入层、多头自注意力机制、位置编码、前馈神经网络、编码器和解码器等模块,并通过清晰的代码示例逐步展示了如何在PyTorch中构建完整的Transformer模型。文末提供了一个可运行的简单示例,帮助读者快速理解并实践Transformer的核心原理与实现方法。

WeLearnNLP 1026

《Java编程思想》第18章 Java I/O系统

《第18章 Java I/O系统》 任何自InputStream和Reader派生而来的类都含有read()基本方法。   Reader和Writer类提供天然的Unicode操作。 在某些场合,面向字节的InputStream和OutputStream才是正确的解决方案。 特别是java.util.zip类库就是面向字节的而不是面向字符的。   自我

天空之城 880

《UDS协议从入门到精通》系列——图解0x23:通过地址读取内存

如何读取ECU中指定内存地址的数据?图解UDS 0x23服务带你快速上手!!

车载系统攻城狮 2623

【Java编程思想】第18章 I/O系统(待完成)

这章待补充

chuxue1989的专栏 272

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Thinking in Java 第18章 Java I/O 系统(18.9-18.14)

//声明:部分内容引自《Java编程思想(第四版)》机械工业出版社 【进程控制】 – 你经常会需要在 Java 内部执行其他操作系统的程序,并且要控制这些程序的输入和输出。Java 类库提供了执行这些操作的类。

Tracy像太阳 520

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Thinking in java 第18章 Java I/O系统

1, File类 File类既能代表一个特定文件的名称,又能代表目录下的一组文件的名称。如果指的是一个文件集,我们就可以对此集合调用list方法,这个方法会返回一个字符数组。 下面是一个例子,如何得到符合条件的File对象。 import java.io.File; import java.util.Arrays; public class DirList { public static...

lc138544的博客 314

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

《java编程思想》学习笔记18 第18章 java I/O系统

1,对程序语言设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的事。   2,File类:     它是能代表一个特定的文件的名称,又能代表一个目录下的一组文件的名称。如果它代表一个文件集,我们就可以对此集合调用list()方法,这个方法会返回一个字符的数组。   3,文件目录器   public class DirList {  public static void ma...

liguangyuanyinli的博客 463

think in java i o_《Thinking in Java》学习——18章Java I/O系统(三)

ppe#标准I/O一.从标准输入中读取1.按照标准I/O模型,Java提供了System.in、System.out、System.err。其中System.out已经事先被包装成了PrintStream对象。System.err同样也是PrintStream,但是System.in却是一个没有被包装过的未经加工的InputStream。这意味着尽管我们可以立刻使用System.out和Syste...

weixin_31969181的博客 185

编程思想 -- 第18章 -- JAVA I/O系统

Java I/O系统 创建一个好的 输入/输出(I/O) 系统是一项艰难的任务。不仅存在各种I/O源端和想要与之通信的接收端(文件,控制台,网络链接等),而且还需要以多种不同的方式与它们进行通信(顺序,随机存取,缓冲,二进制,按字符,按行,按字等)。 Java类库的设计者通过创建大量的类解决这个难题。 一、File类 File这个名字既能代表一个特定的文件名称,又能代表一个目录下一组文...

BearSilencer的博客 357

第18章、java I/O系统

扩展内容: 1、uml常用线的含义 聚合、组合、泛化、实现、依赖、关联 http://blog.csdn.net/jianfpeng241241/article/details/49617449 2、策略模式 http://blog.csdn.net/hguisu/article/details/7558249/ 3、享元模式 4、装饰器模式      允许向一个现有的对象添加新的

431

《JAVA编程思想》学习笔记:第18章(Java的I/O系统)

目录Java编程思想(一)第1~4章:概述Java编程思想(二)第5章:初始化和清理Java编程思想(三)第6章:访问权限Java编程思想(四)第7章:复用类Java编程思想(五)第8章:多态Java编程思想(六)第9章:接口Java编程思想(七)第10章:内部类Java编程思想(八)第11章:持有对象Java编程思想(九)第12章:异常Java编程思想(十)第13章:字符串Java编程思想(十一...

caobaokang的专栏 1532

think in java i o_《Thinking in Java》学习——18章Java I/O系统(四)

压缩1.Java I/O类库中的类支持读写压缩格式的数据流。由于压缩类库是按字节方式处理的而不是字符方式,因此这些类不适从Reader和Writer派生而来,而是属于InputStream和OutputStream继承结构的一部分。压缩类功能CheckedInputStreamGetCheckSum()为任何InputStream产生校验和(不仅是解压缩)CheckedOutputStreamGe...

weixin_42362003的博客 123
上一篇: JAVA byte最大值是127,最小值确实-128
下一篇: <action>元素属性parameter的作用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值