Java的IO流

什么是流

流(IO),在计算机系统中,将不同的输入输出源统一抽象为流,流是一种实现数据交换技术的核心,比较常见的流的使用在于:文件操作,网络数据传输等;流由两大核心部分构成:1.Input(输入),2.Output(输出);通俗的理解为人的嘴(输出)和耳朵(输入),对流的使用就分为两种操作:读和写;java中所有有关流的类都来自于java.io包

流的分类

java-IO将流分为几种类别:

  1. 按流向分为:输入和输出
  2. 按类型分为:字节和字符
  3. 按功能分为:节点流和处理流

字节流

所谓字节流,其实就是将数据以字节为单位进行读写相关操作,字节流一般用于对于一些二进制文件(图片,音频,视频等)进行读写操作,java中的字节流都是来自以下两个抽象类:

  1. InputStream(字节输入流)
  2. OutputStream(字节输出流)

InputStream类

inputStream类是所有字节输入流的父类,是一个抽象类,常用方法包含以下:

  1. available():获取当前流中的可读字节数
  2. close():关闭此流
  3. read():从流中读取一个字节,返回读取到的字节
  4. read(byte[] b):将流中读取到的字节存入到指定的字节数组中,返回真实读取的长度,读取不到返回-1
  5. read(byte[] b,int offset,int len):将流中读取奥的字节存入到指定的字节数组中(跳过offset个字节存储,存储长度为len),读取不到返回-1

InputStream类的常见子类有FileInputStream,ByteArrayInputStream,ObjectInputStream,FilterInputStream等

OutputStream类

OutputStream类是所有字节输出流的父类,是一个抽象类,常用方法如下:

  1. write(byte[] b):将字节数组中的内容写入输出源(文件,网络,内存)
  2. write(byte[] b,int offset,int len):将字节数组中的内容从offset开始写入len长到输出源
  3. write(int b):将一个字节写入输出源
  4. flush():将流中的数据强制刷新到输出源
  5. close():关闭此流

OutputStream类的常见子类有FileOutputStream,ByteArrayOutputStream,ObjectOutputStream,FilterOutputStream等

文件拷贝

通过以上字节流(输入输出)的使用,可以实现系统中的文件拷贝功能,文件拷贝原理即:获取源文件的输入流,获取目标文件的输入流,通过读取输入流中的数据并写入输出流中

字符流

​ 字符流,顾名思义,是以字符的形式对输入输出源操作,通常情况下一个字符表示两个字节,但是在一些unicode编码,如UTF-8则使用3个字节表示,但是由于字符流的特殊性,一般用字符流主要操作一些文本输入输出源(文本文档,记事本文件等字符数据);java中所有的字符流都从以下两个抽象类继承:

  1. Reader 字符输入流
  2. Writer 字符输出流

Reader

字符输入流,是所有字符输入流的父类,是一个抽象类,内部的常见方法如下:

  1. read():读取并返回一个字符
  2. read(char[] c):将从流中读取的字符存储到字符数组
  3. read(char[] c,int offset,int len):将从流中读取的字符存入字符数组(跳过offset个字节,写入len长)
  4. ready():返回此流是否准备好被读取的状态
  5. close():关闭此流

Reader类的常见子类包含:InputStreamReader,BufferedReader,FilterReader,PipedReader等,常见的间接子类有FileReader

Writer

字符输出流,是所有字符输出流的父类,是一个抽象类,内部的常见方法如下:

  1. append(char c):向流中追加一个字符
  2. append(CharSequence c):向流中追加一个字符序列(字符串)
  3. witer(String s):写入一个字符串到目标输出源
  4. witer(char[] c):写入字符数组到目标输出源
    Writer类的常见子类包含:OutStreamReader,BufferedWriter,FilterWriter,PipedWriter等,常见的间接子类有FileWriter

转换流、缓冲流打印流

​ 由于以上所提到的流,按照功能来说都属于节点流(直接跟输入输出源打交道),而在实际开发中有些需求可能会涉及到需要将字节流转换为字符流,或者将字符流转换为字节流等一些转换操作;另外也有可能需要将这些低级的节点流提高读取和写入效率,因此还需要一些高级流来进行处理,因此这些高级流也被称之为处理流,比如:转换流,缓冲流,打印流等。

转换流

java-io中的转换流主要分为两个:

  1. InputStreamReader:将字节流转换为字符流的桥梁
  2. OutputStreamWriter:将字符流转换为字节流的桥梁

缓冲流

缓冲流的出现主要为了提高节点流的读取和写入效率,使用方式通常为将其他节点流包装起来,io包中的缓冲流分为以下几个:

  1. BufferedReader
  2. BufferedWriter
  3. BufferedInputStream
  4. BufferedOutputStream

打印流

另外在IO包中还提供了两个特殊的流,这两个流只有输出,没有输入:

  1. PrintStream 字节打印流
  2. PrintWriter 字符打印流

打印流通常可以对其他输出流(Writer,OutputStream)以及文件(File)进行包装,然后通过提供的相关API操作这些流,常见构造器:

  1. PrintStream
    1. PrintStream(File file)
    2. PrintStream(String fileName)
    3. PrintStream(OutputStream os)
    4. PrintStream(OutputStream os,boolean autoFlush)
  2. PrintWriter
    1. PrintWriter(File file)
    2. PrintWriter(String fileName)
    3. PrintWriter(OutputStream os)
    4. PrintWriter(OutputStream os,boolean autoFlush)
    5. PrintWriter(Writer w)
    6. PrintWriter(Writer w,boolean autoFlush)
以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值