JAVA学习【知】IO(二)

JAVA学习——IO流 1. I 指Input,称为输入流:负责把数据读到内存中去2. O 指Output,称为输出流:负责写数据出去3. IO流的分类第一种:按流的方向分:输入流和输出流第二种:按流中数据的最小单位分:字节流和字符流总结流的四大类:字节输入流 : 以内存为基准,来自磁盘文件/网络中的数据以字节的形式读入到内存中去的流字节输出流 : 以内存为基准,把内存中的数据以字节写出到磁盘文件或者网络中去的流。字符输入流 : 以内存为基准,来自磁盘文件/网络中的数据以字符的形式读入到内存中去的流。 阅读详情

再上一节我们概括了IO这个章中的类

其中按功能我们了 节点流和处理流。
本节我们介绍处理流,在上节我们也给出了处理的流的定义,在这不在详细说明 处理流中的缓冲流
缓冲流是在一个流上又套接一个流用来提高效率的,我们知道节点流是一个个的读取文件而缓冲流是把读取的文件一次性写入或者写出的。
这样的好处是更好的保护硬盘,提高读写效率。
缓冲流包括(具体的类和方法可查看API中IO这个包
BufferedInputStream
作为另一种输入流,BufferedInputStream 为添加了功能,即缓冲输入和支持 mark 和 reset 方法的能力。创建 BufferedInputStream 时即创建了一个内部缓冲区数组。读取或跳过流中的各字节时,必要时可根据所包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作导致在从所包含的输入流中获取新的字节前,再次读取自最后一次 mark 操作以来所读取的所有字节。

BufferedOutputStream
该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。

BufferedReader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

 BufferedReader in
   = new BufferedReader(new FileReader("foo.in"));
 将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

BufferedWriter

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('/n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到基础字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

 PrintWriter out
   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));


下面我们举例说明:

  1. import java.io.*;
  2. public class BufferedReader1 {
  3.     
  4.     public static void main(String[] args) {
  5.         String c=null;
  6.         try {
  7.             
  8.             FileReader fr = new FileReader ("某文件的路径");
  9.             BufferedReader  br = new BufferedReader (fr);
  10.     while((c=br.readLine())!=null){ //readLine方法读取一个文本行。
  11.                 System.out.print(c);
  12.             }
  13.             br.close();
  14.         
  15.             
  16.         } catch (FileNotFoundException e) {
  17.             System.out.println("文件没有被发现");
  18.             e.printStackTrace();
  19.         } catch (IOException e) {
  20.             // TODO 自动生成 catch 块
  21.             e.printStackTrace();
  22.         }
  23.     }
  24. }
  25. //我们可以看到用BufferedReader 这个类时会有个readLine这个方法,这个方法好处是一次读取一行,相对效率更高。
Java IO(二) 首先,解释一下阻塞与非阻塞。阻塞 IO 指的是需要内核 IO 操作彻底完成后才返回到用户空间执行用户程序的操作指令。“阻塞”指的是用户程序(发起IO请求的进程或者线程)的执行状态。可以说传统的 IO 模型都是阻塞 IO 模型,并且在 Java 中默认创建的 socket 都属于阻塞 IO 模型。其次,解释一下同步与异步。简单来说,可以将同步与异步看成发起 IO 请求的两种方式。同步 IO 是指用户空间(进程或者线程)是主动发起 IO 请求的一方,系统内核是被动接收方。 阅读详情

相关推荐

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2015

java IO流学习总结

https://www.cnblogs.com/hopeyes/p/9736642.html 近期学习了Java的IO流,尝试着总结一下。 java.io 包下的IO流很多: 其中,以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类,所有的输出流都是抽象类Outp...

乔志勇笔记 1万+

一文读懂Cache一致性原理

本文介绍了为什么需要维护cache一致性、一致性协议的本质和类别,以及如何设计一致性协议。

W1Z1Q的专栏 6853

Java IO流学习总结(二)—— 常用IO流继承关系图

Java IO流学习总结(二)—— 常用IO流继承关系图 接Java IO流学习总结(一)—— IO流分类和常用IO流汇总中汇总的IO流的继承关系图如下:

Sirm23333 1万+

基于LTspice的共模电感差模/共模插入损耗仿真指南

在电源与EMC设计领域,插入损耗是衡量滤波器件抑制噪声能力的核心指标。共模电感作为EMI滤波器中最常见的元器件之一,其差模与共模插入损耗特性直接影响整体滤波方案的合规性。然而,仅依赖规格书曲线往往难以覆盖真实应用中的阻抗条件,借助SPICE仿真工具进行电路级验证已成为工程师常用的手段。LTspice凭借其轻量、高效的交流分析能力,能够帮助设计者快速搭建共模电感等效模型,并通过调整耦合系数、寄生电容等参数,还原漏感与谐振行为。本文以Wurth Elektronik的WE 744821201型号为例,从基本测试

weixin_27252001的博客 293

蓝牙耳机充电仓——功能框架

数据传输:大部分充电仓会跟耳机通信,控制耳机开机、关机和进入可搜索模式等等。蓝牙耳机给大家的生活带来便利,来讲讲TWS蓝牙耳机的搭档充电仓吧!方便携带:如果耳机单独带着,指定能弄丢一个,有了充电仓就安全多了。收纳保护:把珍爱的耳机放入充电仓里,防止丢失、磕碰、刮花等。给耳机充电:提供电力补给,让耳机持续使用。

改变自己现在能改变的,珍惜自己现在所拥有的 8955

Java IO面试题(二)

1. 请谈谈Java NIO相比传统IO的优势和不足之处。 2. 什么是Reactive Programming(响应式编程)?它与异步IO有何关联? 3. 在Java中实现非阻塞IO操作时,如何避免数据不一致或数据乱序的问题? 4. 什么是Java中的CompletionHandler?它在异步IO中的作用是什么? 5. 请描述如何在Java中使用Future和Promise来处理异步操作结果。 6. 如何使用Java NIO实现一个高性能的Echo服务器? 7. 多路复用技术中的“多路”是什么意思?它与

闲依农圃邻,偶似山林客。 1516

SCTPPortScan SCTP协议端口扫描、关联地址识别、传输状态检测

Windows:Winsock2+SCTP扩展)。- **SCTP API封装**:Linux下直接调用`socket()`、`connect()`、`getsockopt()`等系统函数,解析`struct sctp_status`和`struct sctp_paddrinfo`获取状态和关联地址。qDebug() << "开始SCTP扫描:" << ipList.size() << "个IP," << ports.size() << "个端口,共" << m_totalTasks << "个任务";

寒寒豆豆软件公司的博客 93

Java学习笔记——IO流

IO流的作用:读写文件数据。

weixin_44456914的博客 2109

088、多摄像头跨镜目标追踪 ID 频繁切换?ReID 特征 + 轨迹关联 + 时间约束方案

文章摘要:本文针对多摄像头跨镜目标追踪中ID频繁切换的问题,提出了一种结合ReID特征、轨迹关联和时间约束的综合解决方案。作者分析了ID切换的三个主要原因:ReID特征不稳定、轨迹关联依赖最近邻匹配以及忽略时间约束。通过改进ReID特征提取(多层特征融合)、引入轨迹预测(卡尔曼滤波)和添加时间窗口约束,成功将ID切换率从35%降至3%以下。文章详细分享了实现细节和踩坑经验,为跨摄像头目标追踪提供了实用优化思路。

ai技术增长的博客 169

2025届程序技术类笔试题

希尔排序在直接插入排序的基础上进行了改进,它通过比较相距一定间隔的元素来进行,各轮比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一轮排序为止。某人逆着水流的方向向岸边划船,每次行进前进x米后需要休息一下,休息期间船会自行倒退y米,每次休息后再次行进,前进距离缩短1/5,若起始距离岸边为m米,问:能否到达岸上,需要行进多少次才能上岸。直接插入排序的原理是将第i个元素插入前面i-1个已排好序的记录中,将比第i个元素大的记录依次向后移动一个位置,将第i个元素插入空位。第二轮相邻比较,后移2次。

博客 599

Java的IO学习目录

Java IO学习摘要 本文系统介绍了Java IO的核心知识,分为四大模块:1)基础概念,包括流分类(输入/输出流、字节/字符流、节点/处理流);2)字节流操作,涵盖文件字节流、缓冲字节流和数据字节流;3)字符流处理,包含文件字符流、缓冲字符流和转换流;4)标准IO与重定向。每种流类型均配有典型代码示例,展示文件读写、缓冲优化、数据类型处理和字符编码转换等实用技巧。特别强调了try-with-resources语法确保资源自动释放,以及缓冲流提高性能的重要性。

weixin_39956506的博客 693

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java的IO流(二)

Commons-io解决的问题:IO技术开发中,代码量很大,而且代码的重复率较高。如果我们要遍历目录,拷贝目录就需要使用方法的递归调用,也增大了程序的复杂度。Apache软件基金会,开发了IO技术的工具类commons-IO,大大简化IO开发。Commons-io工具包是第三方包,所以使用前需要导入包,但是这个包是jar在指定位置创建文件夹,取名为lib或者libs将准备好的jar包,放到此文件夹下对着jar包,右键 -> Add as library (如果想将lib下所有的jar。

小何代码咖啡馆 1362

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JAVA的IO模型的学习

参考: https://www.zhihu.com/question/337609338 https://blog.youkuaiyun.com/ty497122758/article/details/78979302 https://blog.youkuaiyun.com/weixin_41563161/article/details/104242190 https://blog.youkuaiyun.com/crazymakercircle/article/details/85858596 这个对IO模型讲的比较好:https://mp.

Fuly的博客 198

Java IO体系学习总结

不仅如此,传统的输入流、输出流都是通过字节的移动来处理的(即使我们不直接处理字节流,但底层实现还是依赖于字节处理),也就是说,面向流的输入和输出一次只能处理一个字节,因此面向流的输入和输出系统效率通常不高。从图15.4可以看出,当使用处理流进行输入/输出时,程序并不会直接连接到实际的数据源,没有和实际的输入和输出节点连接。使用处理流的一个明显的好处是,只要使用相同的处理流,程序就可以采用完全相同的输入/输出代码来访问不同的数据源,随着处理流所包装的节点流的变化,程序实际所访问的数据源也相应的发生变化。

jiaoyaqiang的博客 959

Java学习总结之Java IO系统(二)

本文接着Java学习总结之Java IO系统(一),我们继续总结Java IO系统的相关知识。 字符流(Writer、Reader) Java提供了两个操作字符的字符流基类,分别是Writer和Reader。先来了解两个用于读写文件的字符流FileReader(字符输入流)和FileWriter(字符输出流): FileReader FileReader类从InputStreamReader类继承而来。该类按字符读取流中数据。可以通过以下几种构造方法创建需要的对象。 在给定从中读取数据的 File 的情况下

不吃_花椒的博客 309

Java IO学习

一、Java IO   Java 的IO包含了java的输入输出,所有的类都在java.io包中。其主要内容就是java的输入输出流,又可以分为字符流和字节流。其中字符流以字符来处理输入输出操作,字节流则以字节为单位来处理输入输出流。接下来将分别介绍几个重要的IO操作类。 二、File类   File类是java.io包下与平台无关的文件和目录处理类,对文件和目录可以实现新建,删除,重命

三哥的博客 2449

Java网络IO学习笔记

java网络io学习笔记

m0_55810383的博客 1054

Java IO学习总结

文章目录File一.概念二.File的静态常量三.构造方法四.获取File五.相对路径和绝对路径六.File的创建方法七.File类的删除方法八.File类的判断方法九.File的遍历方法IO分类字节流字节输出流字节输入流 File 一.概念 **java.io** &nbsp;&nbsp;&nbsp;&nbsp;将字符串形式的路径,封装成File类,File类提供...

weixin_44564242的博客 822

Java中的IO流(二)

IO流(一):https://blog.youkuaiyun.com/Veer_c/article/details/103833045 编码问题 String中的编码和解码问题。 编码:把我们能够看懂的字符转换为看不懂的数据 解码:把我们看不懂的数据转换为看得懂的字符 public byte[] getBytes(String charsetName) 按照给定的编码方式,编码字节数组(gbk,utf-8) ...

Veer_c的博客 7219

Java IO 学习总结

Java IO (java.io package) 学习总结 Java IO API Java IO API的设计目的: 解决java程序的输入输出问题. Java IO API的范围: 主要解决文件IO,网络IO,内存缓冲IO等等. Java IO 的优点: 设计优雅,高度封装,使用便捷. Java IO的缺点: 阻塞式的,性能一般 Java IO API的类关系图 (图片...

Again的博客 401

[从零开始学习JAVA] IO流

在前文我们知道,如果我们想要实现对于程序的存档功能,就一共需要实现两个功能:1.将数据存到文件当中,这也就是我们上一篇文章File类的作用2.实现程序对文件数据的读取功能,这也就是我们接下来几篇所介绍的IO流的作用在Java中,IO流(Input/Output Stream)是用于处理输入和输出的机制。它提供了读写数据的方式,允许程序与文件、网络等交互。Java中的IO流分为字节流和字符流两种类型。字节流操作以字节为单位进行输入和输出。

2301_80615512的博客 1110
上一篇: JAVA学习【知】IO(一)
下一篇: JAVA学习【知】线程
不善^
博客等级 码龄18年 635粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值