兰州启点网站建设/软文营销的定义

兰州启点网站建设,软文营销的定义,江宁区建设工程质量监督站网站,网站建设的风险分析Java中IO流 在Java编程中,IO流(Input/Output Stream)是非常重要的概念,它为程序的输入和输出操作提供了一套强大而灵活的机制。本文将详细介绍Java中IO流的相关内容,包括其基本概念、分类以及常见类的使用示例。 一、…

Java中IO流

在Java编程中,IO流(Input/Output Stream)是非常重要的概念,它为程序的输入和输出操作提供了一套强大而灵活的机制。本文将详细介绍Java中IO流的相关内容,包括其基本概念、分类以及常见类的使用示例。

一、基本概念

Java的IO流用于在程序和外部设备(如文件、网络连接等)之间传输数据。简单来说,它提供了一种将数据看作是流的形式进行处理的机制,数据可以在不同的源和目标之间以流的方式“流动”。例如,从文件中读取数据可以看作是从文件这个数据源沿着流的方向将数据流入程序,而向文件中写入数据则是将程序中的数据通过流的方式流出到文件这个目标。

二、IO流的分类

(一)按流向分类

  • 输入流(Input Stream):用于从数据源(如文件、键盘等)读取数据到程序中。例如,当我们需要从文件中读取内容时,就会使用输入流来实现。常见的输入流类有InputStreamReader

  • 输出流(Output Stream):用于将程序中的数据写入到目标(如文件、显示器等)。比如,当我们要将程序中的数据保存到文件中时,就会用到输出流。常见的输出流类有OutputStreamWriter

(二)按数据传输单位分类

  • 字节流:以字节为单位进行数据的传输和处理。字节流可以处理任何类型的数据,包括二进制数据(如图像、音频、视频等)。在Java中,字节流的基类是InputStreamOutputStream。例如,FileInputStreamFileOutputStream就是常用的字节流类,用于对文件进行字节级别的读写操作。

下面是一个使用字节流读取文件内容的简单示例:

import java.io.FileInputStream;
import java.io.IOException;public class ByteReadStreamExample {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("test.txt")) {int data;while ((data = fis.read())!= -1) {System.out.print((char) data);}} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用FileInputStream打开文件test.txt,然后通过循环不断读取文件中的字节数据,直到读取到文件末尾(read方法返回-1)。每次读取一个字节并将其转换为字符输出。

  • 字符流:以字符为单位进行数据的传输和处理。字符流主要用于处理文本数据,它会在内部进行字符编码和解码的操作,更适用于处理人类可读的文本信息。在Java中,字符流的基类是ReaderWriter。例如,FileReaderFileWriter就是常用的字符流类,用于对文件进行字符级别的读写操作。

下面是一个使用字符流读取文件内容的简单示例:

import java.io.FileReader;
import java.io.IOException;public class CharacterReadStreamExample {public static void main(String[] args) {try (FileReader fr = new FileReader("test.txt")) {int data;while ((data = fr.read())!= -1) {System.out.print((char) data);}} catch (IOException e) {e.printStackTrace();}}
}

在这个示例中,我们使用FileReader打开文件test.txt,然后通过循环不断读取文件中的字符数据,直到读取到文件末尾。

  • **缓冲流:**字节流中读取读入文件是磁盘之间的单字节读取,这种频繁的单字节操作会导致大量系统调用降低读取速度。而缓冲流内部会维护一个缓冲区(在内存中),从缓冲区读取取数据,每读满8kb再通过基本流写到硬盘上,因为内存之间读取速度远大于硬盘之间读写,因此相对于字节流大大加快了传输速度。相对于字符流,由于字符流本身存在缓冲区,所以效果没有字节流那么明显但是性能提升仍然显著。缓冲流的使用需要将基本流包装成缓冲流,下面分别展示一下缓冲字符流和缓冲字节流

    缓冲字节流

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;public class BufferedByteStreamExample {public static void main(String[] args) {byte[] data = "这是使用缓冲字节流写入的字节数据。".getBytes();// 写入字节数据到文件try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("byte.txt"))) {bos.write(data);} catch (IOException e) {e.printStackTrace();}// 从文件中读取字节数据try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("byte.txt"))) {int byteRead;while ((byteRead = bis.read()) != -1) {System.out.print((char) byteRead);}} catch (IOException e) {e.printStackTrace();}}
    }
    

    缓冲字符流

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;public class BufferedCharacterStreamExample {public static void main(String[] args) {// 写入文本到文件try (BufferedWriter writer = new BufferedWriter(new FileWriter("character.txt"))) {writer.write("这是使用缓冲字符流写入的文本。");writer.newLine();writer.write("第二行文本。");} catch (IOException e) {e.printStackTrace();}// 从文件中读取文本try (BufferedReader reader = new BufferedReader(new FileReader("character.txt"))) {String line;while ((line = reader.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}
    }
    

三、常见的IO流类汇总

以下是一些在Java中常用的IO流类:

流类型抽象基类常见子类说明
字节输入流InputStreamFileInputStreamByteArrayInputStreamDataInputStream用于从不同数据源读取字节数据
字节输出流OutputStreamFileOutputStreamByteArrayOutputStreamDataOutputStream用于向不同目标写入字节数据
字符输入流ReaderFileReaderBufferedReaderStringReader用于从不同数据源读取字符数据
字符输出流WriterFileWriterBufferedWriterStringWriter用于向不同目标写入字符数据

四、总结

Java中的IO流提供了一种统一而灵活的方式来处理程序与外部设备之间的数据交互。通过了解不同的分类和使用方法,我们可以根据具体的需求选择合适的IO流类来完成各种输入和输出操作。无论是处理文件、网络通信还是其他数据交换场景,IO流都是Java编程中不可或缺的一部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Tiny RDM】Redis客户端工具

Tiny RDM Tiny RDM是一款现代化、轻量级、跨平台的Redis客户端,支持Mac、Windows和Linux,目前在Github上已有10kStar。 Github 项目地址: https://github.com/tiny-craft/tiny-rdm 功能特性 极度轻量,基于Webview2&#xff0c…

ctfshow REVERSE re2 萌新赛 内部赛 七夕杯 WP

目录 re2 萌新赛 flag白给 签退 数学不及格 内部赛 批量生产的伪劣产品 来一个派森 好好学习 天天向上 屏幕裂开了 七夕杯 逆向签到 easy_magic re2 ida分析主函数,将flag.txt内容加密写入enflag.txt 这是密钥加密过程 标准rc4加密 简单异或解…

【Linux】线程库

一、线程库管理 tid其实是一个地址 void* start(void* args) {const char* name (const char *)args;while(true){printf("我是新线程 %s ,我的地址:0x%lx\n",name,pthread_self());sleep(1);}return nullptr; }int main() {pthread_t tid…

文件上传的小点总结(1)

2.文件类型绕过 问题插入:BP无法拦截本地流量 ①插件限制 不代理的地址列表通常写有localhost和127.0.0.1,把本地的全都删掉,然后应用保存。 ②浏览器限制 Firefox浏览器设置:检查浏览器代理配置和proxy listeners都没问题后&…

AI基础01-文本数据采集

本篇文章是学习文本数据的采集,作为人工智能训练师或者数据分析师有时需要先获取数据,然后进行数据清洗、数据标注。很明显数据采集是后续步骤的基础。 1)数据采集定义 数据采集:data acquisition,DAQ 又称为数据获取…

深度学习Python编程:从入门到工程实践

第一章 Python语言概述与生态体系 1.3 Python在工业界的应用场景 # 示例:使用FastAPI构建RESTful接口 from fastapi import FastAPI from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strprice: float@app.post("/items/") async def cr…

使用CSS3实现炫酷的3D翻转卡片效果

使用CSS3实现炫酷的3D翻转卡片效果 这里写目录标题 使用CSS3实现炫酷的3D翻转卡片效果项目介绍技术要点分析1. 3D空间设置2. 核心CSS属性3. 布局和定位 实现难点和解决方案1. 3D效果的流畅性2. 卡片内容布局3. 响应式设计 性能优化建议浏览器兼容性总结 项目介绍 在这个项目中…

【读书笔记】华为《从偶然到必然》

note 华为的成功并非偶然,而是通过IPD体系、投资组合管理、平台战略等系统性工具,将研发投资转化为可持续的商业竞争力。书中强调的“管理即内部因素”理念,揭示了企业规模扩张与管理能力匹配的深层规律,为高科技企业提供了可借鉴…

HashMap添加元素的流程图

文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构(链表还是红黑树)5. 判断链表长度是否超过 …

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…

FFmpeg + ‌Qt‌ 简单视频播放器代码

一个基于 ‌FFmpeg 4.x‌ 和 ‌Qt‌ 的简单视频播放器代码示例,实现视频解码和渲染到 Qt 窗口的功能。 1)ffmpeg库界面,视频解码支持软解和硬解方式。 2)QImage/QPixmap显示视频图片。 ‌1. Qt 项目配置(.pro 文件&…

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网,将我们与世界的每一个角落紧密相连。然而,当某些与自己名字相关的资料不再希望被公众轻易检索到时,如何在百度搜索中有效“隐身”,成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

[贪心算法]最长回文串 增减字符串匹配 分发饼干

1.最长回文串 我们可以存下每个字母的个数,然后分类讨论 如果是奇数就减一加到结果中如果是偶数就直接加入即可 最后判断长度跟原字符串的差距,如果小于原数组说明有奇数结果1 class Solution { public:int longestPalindrome(string s) {int ret0;//1.计…

目标检测中的非极大值抑制(NMS)原理与实现解析

一、技术背景 在目标检测任务中,模型通常会对同一目标生成多个重叠的候选框(如锚框或预测框)。非极大值抑制(Non-Maximum Suppression, NMS) 是一种关键的后处理技术,用于去除冗余的检测结果,保…

Linux 启动Jar脚本设置开机自启【超级详细】

Linux 启动Jar脚本&&设置开机自启【超级详细】 概要服务器开机自启服务重启脚本 概要 最近在Linux服务器中部署了一个项目(单机版),每次更新服务的时候需要用到好几个命令,停止服务,再重启,并且服…

【第21节】windows sdk编程:网络编程基础

目录 引言:网络编程基础 一、socket介绍(套接字) 1.1 Berkeley Socket套接字 1.2 WinSocket套接字 1.3 WSAtartup函数 1.4 socket函数 1.5 字节序转换 1.6 绑定套接字 1.7 监听 1.8 连接 1.9 接收数据 1.10 发送数据 1.11 关闭套接字 二、UDP连接流程…

QT 图表(拆线图,栏状图,饼状图 ,动态图表)

效果 折线图 // 创建折线数据系列// 创建折线系列QLineSeries *series new QLineSeries;// series->append(0, 6);// series->append(2, 4);// series->append(3, 8);// 创建图表并添加系列QChart *chart new QChart;chart->addSeries(series);chart->setTit…

vue3 ts 请求封装后端接口

一 首页-广告区域-小程序 首页-广告区域-小程序 GET/home/banner1.1 请求封装 首页-广告区域 home.ts export const getHomeBannerApi (distributionSite 1) > {return http<BannerItem[]>({method: GET,url: /home/banner,data: {distributionSite,},}) }函数定…

响应式CMS架构优化SEO与用户体验

内容概要 在数字化内容生态中&#xff0c;响应式CMS架构已成为平衡搜索引擎可见性与终端用户体验的核心载体。该系统通过多终端适配技术&#xff0c;确保PC、移动端及平板等设备的内容渲染一致性&#xff0c;直接降低页面跳出率并延长用户停留时长。与此同时&#xff0c;智能S…

C++核心语法快速整理

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要为学过多门语言玩家快速入门C 没有基础的就放弃吧。 全部都是精华&#xff0c;看完能直接上手改别人的项目。 输出内容 std::代表了这里的cout使用的标准库&#xff0c;避免不同库中的相同命名导致混乱 …