首页 > 其他分享 >IO

IO

时间:2024-03-28 09:33:06浏览次数:19  
标签:字符 读取 NIO IO Reader 字节

IO

所有输入流的基类:InputStream / Reader 所有输出流的基类:OutputStream / Writer

字节流

InputStream常用方法:read(), skip(), available(), close()

  • FileInputStream

  • DataInputStream : 用于读取指定类型数据,不能单独使用,必须结合其它流,比如 FileInputStream 。

  • ObjectInputStream : 从输入流中读取 Java 对象(反序列化)

  • BufferedInputStream

OutputStream常用方法:write(), flush(), close()

  • FileOutputStream

  • DataOutputStream

  • ObjectOutputStream: 将对象写入到输出流 (序列化)。

  • BufferedOutputStream

常用字符编码所占字节数?utf8 :英文占 1 字节,中文占 3 字节,unicode:任何字符都占 2 个字节,gbk:英文占 1 字节,中文占 2 字节。

字符流

Reader(字符输入流)

Reader 用于读取文本, InputStream 用于读取原始字节。

Reader 常用方法:read(), skip(), close()

字节流转换为字符流的桥梁:InputStreamReader

// 字节流转换为字符流的桥梁
public class InputStreamReader extends Reader {
}
// 用于读取字符文件
public class FileReader extends InputStreamReader {
}

Writer(字符输出流)

Writer用于将数据(字符信息)写入到目的地(通常是文件)
Writer 常用方法:write(), append(), flush(), close()

字符流转换为字节流的桥梁:OutputStreamWriter

// 字符流转换为字节流的桥梁
public class OutputStreamWriter extends Writer {
}
// 用于写入字符到文件
public class FileWriter extends OutputStreamWriter {
}

字节缓冲流

 BufferedInputStream

 BufferedOutputStream

字节缓冲流会先将读取到的字节存放在缓存区,大幅减少 IO 次数,提高读取效率。

字符缓冲流

BufferedReader

BufferedWriter

打印流

PrintStream

PrintWriter

IO模型

BIO (Blocking I/O)同步阻塞IO模型

应用程序发起 read 调用后,会一直阻塞,直到内核把数据拷贝到用户空间。

NIO (Non-blocking/New I/O)

Java NIO 核心知识总结 | JavaGuide

同步非阻塞 IO 模型:应用程序会一直发起 read 调用,等待数据从内核空间拷贝到用户空间的这段时间里,线程依然是阻塞的,直到在内核把数据拷贝到用户空间。(通过轮询操作,避免了一直阻塞。)

  • NIO 面向块,I/O 面向流

  • 非阻塞、面向缓冲、基于通道的 I/O,可以使用少量的线程来处理多个连接,大大提高了 I/O 效率和并发。

NIO核心组件:

  • Buffer(缓冲区)

  • Channel(通道):双向的、可读可写的数据传输通道

  • Selector(选择器)

NIO零拷贝:零拷贝是指计算机执行 IO 操作时,CPU 不需要将数据从一个存储区域复制到另一个存储区域,从而可以减少上下文切换以及 CPU 的拷贝时间。

AIO (Asynchronous I/O)

异步 IO 模型:异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

标签:字符,读取,NIO,IO,Reader,字节
From: https://www.cnblogs.com/Si-wuxie/p/18100790

相关文章

  • SAP BTP云上一个JVM与DB Connection纠缠的案例
    前言最近在CF(CloudFoundry)云平台上遇到一个比较经典的案例。因为牵扯到JVM(app进程)与数据库连接两大块,稍有不慎,很容易引起不快。在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB相关部门。关键是如何自证。涉及到职场生存法则,大家都不愿意去背锅,谁背锅,意......
  • 解决 TS7053: Element implicitly has an any type because expression of type strin
    背景有个接口interfaceDataType{id:number;name:string;created_at:string;updated_at:string;}我的数据{"id":9,"created_at":"2024-03-11T17:50:16.129235+08:00","updated_at":"202......
  • 二次封装axios
    importaxiosfrom"axios";import{ElMessage}from"element-plus";constrequest=axios.create({baseURL:"http://127.0.0.1:3000/api",timeout:5000,});request.interceptors.request.use((config)=>{//c......
  • iOS - Runtime - Class-方法缓存(cache_t)
    文章目录iOS-Runtime-Class-方法缓存(cache_t)1.散列表的存取值iOS-Runtime-Class-方法缓存(cache_t)Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度。(使用空间换时间的方式来提升速度)其中,_buckets就......
  • iOS - Runtime-消息机制-objc_msgSend()
    iOS-Runtime-消息机制-objc_msgSend()前言本章主要介绍消息机制-objc_msgSend的执行流程,分为消息发送、动态方法解析、消息转发三个阶段,每个阶段可以做什么。还介绍了super的本质是什么,如何调用的1.objc_msgSend执行流程OC中的方法调用,其实都是转换为objc_msgSend函......
  • 【逆向】利用Objection实现移动应用抓取https流量
    那女孩对我说说我保护她的梦说这个世界对她这样的不多她渐渐忘了我但是她并不晓得遍体鳞伤的我一天也没再爱过                     ......
  • How to use the smb function of Babyfile App (connect Mac computer)
    1.Mac computer "SystemSettings"->"General"->"Sharing" reachthepagebelow(ordirectlysearchfor"FileSharing"onthesystemsettingspagetoreachthepage).Thenclickthebuttonshownin①2.Then......
  • 「CF1677D」Tokitsukaze and Permutations的题解
    「CF1677D」TokitsukazeandPermutations首先,若\(v\)的后\(k\)个数中有一个\(>0\),或有\(v_i>i-1(i\in[1,n])\),则无解。我们发现,每次对\(p\)进行了一次操作后,\(v\)也一定会对应的进行一次变化,所以统计\(p\)的个数就相当于统计\(v\)的个数。我们对于每一次冒泡排序......
  • msvs_version VS VCINSTALLDIR
     msvs_versionnotsetfromcommandlineornpmconfiggypERR!findVSVCINSTALLDIRnotset,notrunninginVSCommandPromptnpmconfigsetmsvs_version2022 根据错误信息,npmconfigsetmsvs_version2015命令中的msvs_version不是有效的npm选项。如果您想......
  • 【Azure Cloud Service】部署云服务时候遇见 Last exit code: 0. Last role exception
    问题描述部署云服务时候遇见Lastexitcode:0.Lastroleexception:(System.IO.FileNotFoundException)错误,提示无法加载System.Runtime。Recoveringrole...Applicationstartuptask0finishedsuccessfully.Lastexittime:[2024/03/27,20:23:31.142].Lastexit......