java之IO

Java基础知识——JavaIO Java io IO的基本分类 同步和异步的区别:同步是线程去查看是否完成,异步是完成的数据去提醒线程已经完成 参考资料 data = socket.read();socket本意为套接字,为ip+端口,我理解为一个数据载体 (BIO)阻塞io:未请求到数据即让出cpu (NIO not block io)非阻塞io:在 while 循环中不断地去询问内核数据是否就绪,这样会导致 CPU 占用率非... 阅读详情

InputStream:将外部物理设备(磁盘,网络等)中的数据读取到程序(内存)中,OutputStream:将程序中的数据输出到外部设备中。

流的分类

  • 按操作数据的单位分类:字节流(8bit,以byte为单位传输),字符流(16bit,以char为单位传输)
  • 按流的流向分类:输入流和输出流
  • 按流的角色分类:节点流和处理流

流体系

IO流体系

InputStream & Reader

  • 在读取文件时,必须保证文件存在,否则会跑IO异常。
  • 程序中所有的IO资源应该显示的关闭,因为它们不属于内存资源,GC无法回收。
  • int read(char [] c, int off, int len):读取字符到一个数组中的一部分。此方法将阻塞,直到有输入数据可用,发生I/ O错误,或者该流的末尾。返回已读取的字节数,如果已到达流的末尾将返回-1。

OutputStream & Writer

  • void write(int b/int c)
  • void write(byte[] b/char[] cbuf)
  • void write(byte[] b/char[] buff, int off, int len):将当前缓存buff中的数据写入到输出流中
  • void flush():将缓存中的数据强制同步到底层流中,默认情况下,缓存区满的情况下才往流中写入。如果这时关闭流则会导致数据丢失。 具体请参考
  • void close(): 需要先刷新,再关闭此流
因为字符流直接以字符作为操作单位,所以 Writer 可以用字符串来替换字符数组,即以 String 对象作为参数
  • void write(String str)
  • void write(String str, int off, int len)
  • 在写入一个文件时,如果目录下有同名文件将被覆盖。

缓冲流

根据数据操作单位可以把缓冲流分为:
  • BufferedInputStream 和 BufferedOutputStream
  • BufferedReader 和 BufferedWriter
  • 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法
  • 对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出
  • public String readline():读取一行文本,如果到达流的结尾将返回null。
  • bw.newLine():写入一个换行符

转换流

  • 将字节流按照指定的编码转换为字符流,效率更加的高效。
  • 需要用到字符编码的,参考
  • 编码:字符->字节数组
  • 解码:字节数组->字符

标准输入输出流

  • System.in:系统标准的输入设备,默认是键盘。类型为InputStream。
  • System.out:系统标准的输出设备,默认是显示屏。类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类。
  • 通过System类的setIn,setOut方法对默认设备进行改变。
    public static void setIn(InputStream in)
    public static void setOut(PrintStream out)

打印流

  • PrintStream:字节打印流
  • PrintWriter:字符打印流
  • 不会抛出异常,可以设置第二个构造参数为true,表示自动flush()。写入换行符或\n时都会刷新缓存区到输出流。

RandomAccessFile类

  • 支持随机访问的方式,程序可以直接跳到任意位置来读,写文件。如访问文件的部分内容,和向已经存在的文件中追加内容。
  • RandomAccessFile类中包含一个记录指针,用来表示当前读写的位置。可以自由的移动指针来改变读取的位置
    • long getFilePointer():获取文件记录指针的当前位置
    • void seek(long pos):将文件记录指针定位到 pos 位置
  • 构造器
    • public RandomAccessFile(File file, String mode)
    • public RandomAccessFile(String name, String mode)
    • mode表示访问模式
      • r: 以只读方式打开,调用write方法将会抛出IOException。
      • rw:打开以便读取和写入
      • rwd:打开以便读取和写入;同步文件内容的更新(默认情形下(rw模式下),是使用buffer的,只有cache满的或者使用RandomAccessFile.close()关闭流的时候儿才真正的写到文件)
      • rws:打开以便读取和写入;同步文件内容和元数据的更新
02【Java的IO模型】_java io包是属于哪种io模型 如果连接大多是长连接,则会导致连接无法释放,新的请求将无法得到处理,另外,BIO这种一个请求对应一个线程的方式在应对高并发的情况下,服务器必须也要创建同等量的线程来处理客户端的请求,这样对系统的消耗是非常大的;在NIO模型中,每个请求都会有一个与服务器做数据交互的通道(Channel),所有的通道都被注册到一个选择器中(selector),当需要与服务器做数据交互时,数据通过管道写入到一个缓冲区(Buffer)中,服务器通过往缓冲区中读取数据,如果当前通道没有数据时,就什么都不会获取, 阅读详情

相关推荐

银河麒麟V10离线环境下的Python项目迁移:从Windows依赖到ARM架构适配

本文详细介绍了在银河麒麟V10离线环境下将Python项目从Windows迁移到ARM架构的完整流程。重点讲解了离线安装pip、virtualenv等基础工具的方法,以及如何解决ARM架构兼容性问题,确保项目依赖正确迁移。文章还提供了常见问题解决方案和性能优化建议,帮助开发者顺利完成国产化平台适配工作。

weixin_42639246的博客 423

Java之IO的介绍与使用

文章介绍了Java中IO相关的知识内容,包括File类操作、文件过滤器、各类输入输出流(字节流、字符流、缓冲流、转换流、打印流)、序列化和反序列化。

Nuyoah的博客 858

AI时代敏捷开发新范式——意图驱动开发IDD

具体的功能代码、单元测试、集成测试用例,以及最终可运行的、支持PlantUML的Markdown转Word工具新版本。:业务方(如技术文档团队)反馈,现有的Markdown转Word工具在处理包含PlantUML代码块的文档时,无法正确生成图表,导致技术方案、架构图等关键信息丢失,严重影响了文档交付质量和团队效率。这不仅带来了交付周期显著缩短、资源效能倍增的可观收益,更深远的意义在于,它描绘了未来软件工业化、智能化的新图景:一个由精准意图驱动、AI自主执行、人类智慧引领的敏捷、高效、高质的新世界。

LiuJunjiang的专栏 551

JavaIO

这个小项目演示了如何使用Java进行基本的文件操作、对象序列化、以及简单的用户交互。你可以根据需要扩展这个项目,比如添加图书删除功能、图书搜索功能、或者提供更复杂的用户界面。

weixin_73778697的博客 826

别再死磕U-Net了!用PyTorch手把手教你搭建ResUnet,搞定医学图像分割(附完整代码)

本文详细介绍了如何利用PyTorch搭建ResUnet模型,通过引入残差连接解决医学图像分割中的梯度消失、特征退化和细节丢失问题。与传统U-Net相比,ResUnet在Dice系数和收敛速度上均有显著提升,特别适合处理脑部MRI等复杂医学图像。文章还提供了完整的代码实现和关键训练技巧,帮助开发者快速掌握这一先进技术。

weixin_42552637的博客 327

【AI编程】Trae 环境搭建与配置从使用到项目实战详解

Trae 环境搭建与配置从使用到项目实战详解

congge 5650

吃透Java IO:字节流、字符流、缓冲流

文章目录1.Java IO流有什么特点?2.Java IO流分为几种类型?3.字节流和字符流的关系与区别?4.字符流是否使用了缓冲?5.缓冲流的效率一定高吗?为什么?6.缓冲流体现了Java中的哪种设计模式思想?7.为什么要实现序列化?如何实现序列化?8.序列化数据后,再次修改类文件,读取数据会出问题,如何解决呢?1. 初识Java IO1.1 IO流分类1、输入流与输出流2、字节流与字符流3、节点流和处理流完整的IO分类图如下:1.2 案例实操2、BufferedInputStream、BufferedO

禧年 2196

Trimble RealWorks处理点云数据(一)之坐标转换

Trimble RealWorks处理点云数据之坐标转换

yilvyangguang520的博客 3618

JavaIO——IO概述

                                                                                                      Java Io原理 IO流用来处理设备之间的数据传输,Java程序中,对于数据的输入/输出操作 都是以“流”的方式进行的。java.io包下提供了各种“流”类的接口,用以获取不同种类的数据,并...

小仙女的博客 2万+

14、网络切片技术:原理、应用与挑战

本文详细探讨了网络切片技术的原理、应用场景及其在5G网络中的重要性。网络切片作为一种关键的网络架构技术,能够在同一物理网络上创建多个独立的逻辑网络,以满足不同应用对安全性、可靠性和性能的多样化需求。文章深入分析了网络切片在5G、SDN/NFV等技术背景下的发展与挑战,并探讨了其在制造业、交通运输、零售等多个行业的实际应用。此外,还介绍了网络切片的部署流程、未来发展趋势以及相关技术难点,为读者全面了解网络切片技术提供了有价值的参考。

palm99的专栏 254

编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)

/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include #include #include

张旺华的博客 1万+

Java 中的阻塞 IO 和非阻塞 IO

IO(输入输出)操作是一个基础而又关键的部分。在 Java 中,处理 IO 通常涉及到阻塞 IO 和非阻塞 IO 两种模式。本文将介绍这两种模式的概念、特点以及在 Java 编程中的应用场景与区别。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 5871

ORB-SLAM3代码详解 - 第 18 篇 · Atlas 多地图系统、地图保存与全系统调优

会跑:理解三线程架构与数据流(01/08/10/13),能编译、配参、复现各数据集结果。会改:掌握相机模型抽象(05)、g2o 顶点与边(14)、预积分(15),能接入新传感器、新相机、新约束。会调:理解每个参数背后的物理含义与耦合(03/15/16/18),能针对自己的平台与场景做精度/实时/鲁棒的权衡。ORB-SLAM3 的价值不止于一个可用的 SLAM 系统,更在于它是一套工程化的几何状态估计模板:清晰的模块边界、可替换的相机/传感器抽象、紧耦合优化的标准范式。

PX4-SLAM-PNC 172

import java.io 是什么意思_Java IO 详解

Java IO 详解初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!)这是java io 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于i...

weixin_34304274的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java io

 Java IO       本篇主要讲述IO相关的内容,主要包括:与IO相关的简单的历史背景知识;Java IO的简单分类;与IO设计相关的两个模式;同时列举几个简单的例子;分析其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧! 一、      历史背景       “对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务。

因为了解所以无知 3万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

彻底搞懂Java的网络IO

IO是Input/Output的缩写。Unix网络编程中有五种IO模型: blocking IO(阻塞IO) nonblocking IO(非阻塞IO) IO multiplexing(多路复用IO) signal driven IO(信号驱动IO) asynchronous IO(异步IO) 背景 java.io包基于流模型实现,提供Fil...

全菜工程师小辉的博客 4092

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java IO 模型详解:从传统 IO 到异步 IO

IO 模型主要有五种:阻塞 I/O、非阻塞 I/O、多路复用、信号驱动和异步 I/O。阻塞 I/O:应用程序执行 I/O 操作时,会一直等待数据传输完成,期间无法执行其他任务。非阻塞 I/O:应用程序执行 I/O 操作时,如果数据未准备好,立即返回错误状态,不等待数据传输完成,可执行其他任务。多路复用:允许一个线程同时管理多个 I/O 连接,适用于高并发、低延迟和高吞吐量场景,减少线程数量和上下文切换开销。信号驱动。

专注Java和MySQL领域知识分享 1256

java io 阻塞io_Java IO流阻塞现状理解

Java线程的状态有五种.其中IO流操作一些接口是阻塞操作的例如package com.cqs.example.io.stream;import lombok.extern.slf4j.Slf4j;import java.util.Scanner;import java.util.concurrent.atomic.AtomicLong;/**** @Author lixw* @Date 7/22...

weixin_35433930的博客 973

Java IO 教程,读完就能学会 Java IO 操作

Java IO(Input/Output)即 Java 的输入输出系统,是 Java 编程中用于处理数据传输的重要部分,它提供了一系列类和接口,让程序能够与各种数据源(如文件、网络连接、内存缓冲区等)进行数据的读取和写入操作。

ubuntulinuxjava的专栏 810

JAVA IO

一、简介 Java对数据的操作是通过流的方式,通过IO流来处理设备之间的数据传输,上传和下载 二、说明 Java 的 IO 操作有以下几类 字节IO:InputStream 和 OutputStream 字符IO:Reader 和 Writer 对象IO:Serializable 磁盘IO:File 网络IO:Socket 非阻塞IO:NIO 字节IO 采用装饰者模式实现 InputStream:字节输入流,抽象类 OutputStream:字节输出流,抽象类 FileInputStream:文件输入

赵士杰 234

java——io

允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。如果类没有显示定义这个静态变量,它的值是Java运行时环境根据类的内部细节自动生成的。如果某个类的字段不是基本数据类型或 String 类型,而是另一个引用类型,那么这个引用类型必须是可序列化的,否则拥有该类型的 Field 的类也不能序列化。缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。

zjx1415926的博客 1010

java IO操作

原文链接 [https://zhhll.com.cn/2020/java基础/IO/1.java基础之IO操作/] 用户进程发起请求,内核接收到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程的地址空间,该用户进程获取到数据后再响应客户端。 数据输入到buffer需要时间,从buffer复制数据至进程也需要时间,根据在这两段时间内等待方式不同,I/O动作可分为五种模式 - 阻塞I/O - 非阻塞I/O - I/O复用 - 信号驱动I/O - 异步I/O

Lxn2zh的博客 1174

【Linux】Java文件IO之普通IO与Buffer IO

在Java中,输入输出(IO)操作是编程中一项重要的任务。无论是从外部文件中读取数据,还是向文件写入数据,或者是与用户进行交互,都需要用到IO操作。

morris 4万+

【IO】java IO流的类型及IO模型

本文详细介绍了IO流的几种类型以及它们使用的场景,同时介绍了常见的几种IO模型。

QiuYanping_的博客 874

Java IO 底层原理

引言 一提到 IO,就绕不开对 page cache(页缓存)的讨论,页缓存是操作系统为了提升磁盘读写性能在应用进程与磁盘之间加设的提供预读和异步刷盘机制的内核缓冲区。java 的 IO 操作是建立在操作系统的 IO 之上的,从最基础的 read/write 系统调用,到具有零拷贝特性的 sendfile、mmap,在 java 中都能看到它们的身影。本文的主要目的是纵观全局,鸟瞰 java IO 体系,并指出每种 IO 方式的特点与使用场景。整篇文章会围绕下图作分步讲解,为了简单起见,这里主要以写操作为例

海为龙世界,云是鹤家乡 2956
上一篇: java中System.exit()
下一篇: Java序列化
菜鸟=大神
博客等级 码龄11年 5粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值